I use DBCP pool and I want use testOnBorrow and testOnReturn to test if connection is still valid.
Unfortunately I have to set property validationQuery to make it work.
Question: What value should be in validationQuery?
I know, that: validationQuery must be an SQL SELECT statement, that returns at least one row.
Problem is that we use various databases (DB2, Oracle, hsqldb).
There is not only one validationQuery for all databases. On each database you have to use different validationQuery.
After few hours of googling and testing I have collected this table:
Database validationQuery notes
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
select 1 from dual
select 1 from sysibm.sysdummy1
/* ping */ select 1
select 1
(tested on SQL-Server 9.0, 10.5 [2008])select 1
select 1
values 1
select 1
select 1 from rdb$database
select 1
select 1 from systables
select 1
select 1
I wrote about it on my blog - validation query for various databases.
In advance there is an example of class, which return validationQuery according to JDBC driver.
Or does anybody have better solution?
For MySQL with the Connector/J driver, there's a lightweight validation query that just sends a ping to the server and returns a dummy result set. The validation query can be (or should start with) exactly the following string:
/* ping */
For more infor refer to the Validating Connections in the MySQL driver manual
For Informix, The validation query is, select 1 from systables
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With