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
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
select 1 from dual
select 1 from sysibm.sysdummy1
select 1
select 1
(testé sur SQL-Server 9.0, 10.5 [2008]) select 1
select 1
values 1
select 1
select 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