2011-02-12 13 views
6

¿Existe una biblioteca que pueda determinar para una clase de controlador jdbc la consulta de validación adecuada para usar?consulta de validación de jdbc

Por ejemplo Si el controlador JDBC es com.mysql.jdbc.Driver o com.mysql.jdbc.jdbc2.optional.MysqlXADataSource la biblioteca sabrá la consulta de validación es "SELECT 1"

C3PO http://www.mchange.com/projects/c3p0/index.html#preferredTestQuery

DBCP http://commons.apache.org/dbcp/configuration.html "validationQuery"

+0

¿Qué quiere decir "consulta de validación"? ¿Quiere decir verificar si la conexión está activa? – skaffman

+4

la mayoría de los grupos de conexiones requieren que el usuario final configure la consulta de validación para usarla para probar la conexión. Las consultas de prueba sql no son portátiles. # para MySQL/PostgreSQL/MS Uso de SQL: SELECCIONE 1 # para uso de Oracle: SELECCIONE 1 desde dual # para uso de DB2: SELECCIONE 1 FROM sysibm.sysdummy1 ¿Cuál es la razón por la que el usuario final debe preocuparse por estas cosas? y ¿por qué cada programador debería hacer lo mismo? por lo tanto, la sugerencia de la biblioteca – joshjdevl

+0

c3po tiene un concepto agradable --TestTable automático. esta idea se puede ampliar ya que es posible que los escenarios no permitan al usuario jdbc crear tablas. Entonces, en vez de usar liquibase, cada esquema tiene databasechangelog. entonces podemos usar SELECT * de databasechangelog. – joshjdevl

Respuesta

8

JDBC tipo 4 proporciona un método isValid

+0

En realidad desde JDBC 3, creo. – peterh

0

no creo que una biblioteca es el lugar apropiado para tal cosa.

Si está utilizando un grupo de conexiones, es más probable que le pida que verifique las conexiones antes de distribuirlas. Simplemente ingresará el SQL apropiado y dejará que el grupo lo maneje. Una biblioteca sería un paso atrás, porque sugiere que su código lo estaría llamando.

+0

Creo que es un paso atrás porque estás hablando de una biblioteca completa, otra dependencia, por algo que en el fondo es trivialmente simple. Escribe "SELECCIONAR 1" y sigue adelante. – duffymo

+1

Aparentemente no están de acuerdo con usted, ya que ninguna de las soluciones de agrupación que cita tiene tal cosa. Nadie más parece pensar que es un gran problema. Buena suerte en la cruzada para convencerlos. Nadie más se ha molestado en responder, tampoco. ¿Qué dice eso? – duffymo

Cuestiones relacionadas