Quelque chose comme :
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();
}
Notez que si la connexion provient d'un pool de connexions (dans un serveur d'applications par exemple), le pool peut disposer d'un mécanisme pour vérifier si une connexion est valide ou non. Avec BEA, vous spécifiez le SELECT dans la propriété "test-on-reserve".
Si vous développez votre propre pool, vous voudrez peut-être jeter un œil à la façon dont les autres le font (ex. Proxool).