Något i stil med:
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();
}
Observera att om anslutningen kommer från en anslutningspool (i en applikationsserver till exempel) så kan poolen ha en mekanism för att kontrollera om en anslutning är giltig eller inte. Med BEA anger du SELECT i egenskapen "test-on-reserve".
Om du utvecklar din egen pool kanske du vill ta en titt på hur andra gör det (ex. Proxool).