我使用DBCP池,我想用testOnBorrow和testOnReturn来测试连接是否仍然有效。
不幸的是我必须设置属性validationQuery,使其工作。
问: 应在validationQuery什么样的价值?
我知道,那:validationQuery必须是一个SQL SELECT语句,返回至少一行。
问题是,我们使用各种数据库(DB2,甲骨文,HSQLDB)。
我使用DBCP池,我想用testOnBorrow和testOnReturn来测试连接是否仍然有效。
不幸的是我必须设置属性validationQuery,使其工作。
问: 应在validationQuery什么样的价值?
我知道,那:validationQuery必须是一个SQL SELECT语句,返回至少一行。
问题是,我们使用各种数据库(DB2,甲骨文,HSQLDB)。
这里不仅是一个validationQuery所有数据库。 在每个数据库必须使用不同的validationQuery。
谷歌搜索和测试的几个小时后,我已经收集了此表:
数据库validationQuery笔记
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
select 1 from dual
select 1 from sysibm.sysdummy1
select 1
select 1
(SQL-Server 9.0中,所测试10.5 [2008]) select 1
select 1
values 1
select 1
select 1 from rdb$database
我写了一篇关于它在我的博客- 为各种数据库验证查询 。
预先存在类的一个例子,它根据JDBC驱动程序返回validationQuery。
或者没有任何人有更好的解决办法?
对于MySQL与Connector / J驱动程序,有,只是发送一个ping到服务器,并返回一个空的结果集的轻量级验证查询。 验证查询可以(或者应该开始)完全以下字符串:
/* ping */
欲了解更多Infor公司指验证连接在MySQL驱动程序手册
对于Informix,验证查询,从systables中选择1