Saber si una conexión es válida

1917 vistas

El método isClosed de Connection no es suficiente para validar una conexión. Éste sólo devuelve true se se ha hecho una llamada al método close. La única posibilidad que queda es hacer una especie de "ping" hacia el servidor. Este "ping" consiste en una consulta simple. Por ejemplo:



java
  1. public static boolean isValid(Connection connection){
  2.   if(connection==null){
  3.       return false;
  4.   }
  5.   ResultSet ping = null;
  6.   try{
  7.       if(connection.isClosed()){return false;}
  8.       ping = connection.createStatement().executeQuery("SELECT 1");
  9.       return ping.next();
  10.   }catch(SQLException sqle){
  11.       return false;
  12.   }
  13.   finally{
  14.       if(ping!=null){try{ping.close();}catch(Exception e){}}
  15.   } 
  16. }