Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Programmgesteuerte Prüfung auf offene Verbindung in JDBC

Etwas wie:

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();
} 

Beachten Sie, dass, wenn die Verbindung von einem Verbindungspool kommt (z. B. in einem Anwendungsserver), der Pool möglicherweise über einen Mechanismus verfügt, um zu prüfen, ob eine Verbindung gültig ist oder nicht. Bei BEA spezifizieren Sie das SELECT in der Eigenschaft "test-on-reserve".

Wenn Sie Ihren eigenen Pool entwickeln, sollten Sie sich ansehen, wie andere es tun (z. B. Proxool).