我使用DBCP池,并且想使用testOnBorrow和testOnReturn来测试连接是否仍然有效。
不幸的是,我必须设置属性validationQuery使其起作用。
问题:validationQuery应该有什么值?
我知道:validationQuery必须是SQL SELECT语句,它至少返回一行。
问题是我们使用了各种数据库(DB2,Oracle,hsqldb)。
Answers:
对于所有数据库,不仅只有一个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。
还是有人有更好的解决方案?
select 1
也适用于Windows NT 6.1 <X64>(内部版本7601:Service Pack 1)(系统管理程序)上的Microsoft SQL Server 2014-12.0.2000.8(X64),2014年2月20日20:04:26,标准版(64位)
select 1
为Hive和Impala
对于Informix,验证查询为从systables中选择1