DBCP – validationQuery pour différentes bases de données

J’utilise le pool DBCP et je souhaite utiliser testOnBorrow et testOnReturn pour tester si la connexion est toujours valide.
Malheureusement, je dois définir la propriété validationQuery pour que cela fonctionne.

Question: Quelle valeur devrait être dans validationQuery?

Je sais que: validationQuery doit être une instruction SQL SELECT, qui renvoie au moins une ligne.

Le problème est que nous utilisons différentes bases de données (DB2, Oracle, hsqldb).

Il n’y a pas qu’une seule validation pour toutes les bases de données. Sur chaque firebase database, vous devez utiliser différentes méthodes de validation.

Après quelques heures de recherche sur Google et de tests, j’ai rassemblé cette table:

Validation de la firebase database

  • hsqldbselect 1 from INFORMATION_SCHEMA.SYSTEM_USERS
  • Oracleselect 1 from dual
  • DB2select 1 from sysibm.sysdummy1
  • mysqlselect 1
  • Microsoft SQL Serverselect 1 (testé sur SQL-Server 9.0, 10.5 [2008])
  • postgresqlselect 1
  • Ingresselect 1
  • derbyvalues 1
  • H2select 1
  • Firebirdselect 1 from rdb$database

J’ai écrit à ce sujet sur mon blog – requête de validation pour diverses bases de données .

À l’avance, il existe un exemple de classe qui renvoie validationQuery en fonction du pilote JDBC.

Ou quelqu’un a-t-il une meilleure solution?

Pour MySQL avec le pilote Connector / J, il existe une requête de validation légère qui envoie simplement un ping au serveur et renvoie un jeu de résultats factice. La requête de validation peut être (ou doit commencer par) exactement la chaîne suivante:

 /* ping */ 

Pour plus d’informations, reportez-vous au manuel de validation des connexions dans le pilote MySQL.

Pour Informix, la requête de validation est, sélectionnez 1 dans les systables