DBCP – validationQuery para diferentes bases de datos

Yo uso el grupo de DBCP y quiero usar testOnBorrow y testOnReturn para probar si la conexión sigue siendo válida.
Lamentablemente, tengo que establecer la propiedad validationQuery para que funcione.

Pregunta: ¿Qué valor debería estar en la validaciónQuery?

Sé que: validationQuery debe ser una instrucción SQL SELECT, que devuelve al menos una fila.

El problema es que utilizamos varias bases de datos (DB2, Oracle, hsqldb).

No solo hay una consulta de validación para todas las bases de datos. En cada base de datos, debe usar validationQuery diferente.

Después de algunas horas de búsqueda en Google y pruebas, he recostackdo esta tabla:

Validación de la base de datos

  • hsqldbselect 1 from INFORMATION_SCHEMA.SYSTEM_USERS
  • Oracle : select 1 from dual
  • DB2 : select 1 from sysibm.sysdummy1
  • mysqlselect 1
  • Microsoft SQL Serverselect 1 (probado en SQL-Server 9.0, 10.5 [2008])
  • postgresqlselect 1
  • ingresselect 1
  • derbyvalues 1
  • H2 : select 1
  • Firebird : select 1 from rdb$database

Escribí sobre esto en mi blog: consulta de validación para varias bases de datos .

De antemano hay un ejemplo de clase, que devuelve validationQuery según el controlador JDBC.

¿O alguien tiene una mejor solución?

Para MySQL con el controlador Connector / J, hay una consulta de validación liviana que simplemente envía un ping al servidor y devuelve un conjunto de resultados ficticio. La consulta de validación puede ser (o debería comenzar con) exactamente la siguiente cadena:

 /* ping */ 

Para obtener más información, consulte Validar conexiones en el manual del controlador de MySQL

Para Informix, la consulta de validación es, seleccione 1 de systables

    Intereting Posts