Oracle
 sql >> Database >  >> RDS >> Oracle

verificando a livello di codice la connessione aperta in JDBC

Qualcosa come:

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

Si noti che se la connessione proviene da un Connection Pool (ad esempio in un Application Server), il Pool potrebbe disporre di un meccanismo per verificare se una connessione è valida o meno. Con BEA, specifichi SELECT nella proprietà "test-on-reserve".

Se stai sviluppando il tuo pool, allora potresti voler dare un'occhiata a come lo stanno facendo gli altri (es. Proxool).