getconnection drivermanager datos conexion conectar con java oracle jdbc

datos - drivermanager.getconnection java



verificación mediante programación de conexión abierta en JDBC (4)

¿Cómo verifico si hay una conexión abierta en jdbc para la base de datos Oracle?

Nota: conn.isClosed() no se puede usar para esto.


Por lo general, un grupo de conexión también usará el método Connection.isClosed () para verificar si la conexión sigue siendo válida. El problema es que no todos los controladores JDBC manejarán esta llamada correctamente. Así que supongo que hay algunas declaraciones de verificación simples como dijo RealHowTo. Para Oracle ya mencionó el "SELECT 1 FROM Dual" que debería tener éxito siempre para las bases de datos Oracle. Creo que hay consultas similares para la base de datos diferente. Puedo recordar que en un proyecto anterior también implementamos un grupo de conexiones propio que utilizaba tales consultas de validación.



Algo como:

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

Tenga en cuenta que si la conexión proviene de un conjunto de conexiones (en un servidor de aplicaciones, por ejemplo), el grupo puede tener un mecanismo para verificar si una conexión es válida o no. Con BEA, especifica el SELECCIONAR en la propiedad "test-on-reserve".

Si está desarrollando su propio grupo, entonces puede consultar cómo lo están haciendo otros (por ejemplo, Proxool ).


Ver esta publicación

Las soluciones a las que se hace referencia son similares a la que se publica aquí (consulta rápida contra DUAL para validar), pero también hay una solución interesante proporcionada por JBoss específica para Oracle que utiliza el método patentado PING en la clase de Oracle JDBC Connection. Vea el código aquí .

// Nicholas