次のようなもの:
Statement stmt = null;
ResultSet rs =null;
try {
stmt = conn.createStatement();
// oracle
rs = stmt.executeQuery("SELECT 1 FROM Dual");
// others
// rs = stmt.executeQuery("SELECT 1");
if (rs.next())
return true; // connection is valid
}
catch (SQLException e) {
// TODO : log the exception ...
return false;
}
finally {
if (stmt != null) stmt.close();
if (rs != null) rs.close();
}
接続が接続プール(たとえば、アプリケーションサーバー)からのものである場合、プールには、接続が有効かどうかを確認するメカニズムがある場合があることに注意してください。 BEAでは、「test-on-reserve」プロパティでSELECTを指定します。
独自のプールを開発している場合は、他の人がそれをどのように行っているかを確認することをお勧めします(例:Proxool)。