sql >> Databasteknik >  >> RDS >> Oracle

söker programmässigt efter öppen anslutning i JDBC

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).



  1. fel:'Kan inte ansluta till lokal MySQL-server via socket '/var/run/mysqld/mysqld.sock' (2)' -- Saknar /var/run/mysqld/mysqld.sock

  2. INSERT med SELECT

  3. Vilket är det enklaste sättet att fylla på tomma datum i SQL-resultat (antingen i mysql- eller perl-änden)?

  4. LN() Funktion i Oracle