DBCP – validation查询不同的数据库
我使用DBCP池,我想使用testOnBorrow和testOnReturn来testing连接是否仍然有效。
不幸的是,我必须设置属性validationQuery使其工作。
问题: validationQuery应该有什么价值?
我知道,validationQuery必须是一个SQL SELECT语句,它返回至less一行。
问题是我们使用各种数据库(DB2,Oracle,hsqldb)。
所有数据库不仅有一个validationQuery。 在每个数据库上,你必须使用不同的validationQuery。
经过几个小时的谷歌search和testing,我收集了这张表格:
数据库validation查询注释
- hsqldb –
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
- Oracle –
select 1 from dual
- DB2 –
select 1 from sysibm.sysdummy1
- MySQL –
select 1
- Microsoft SQL Server –
select 1
(在SQL Server 9.0,10.5 [2008]上testing) - postgresql –
select 1
- 英语 –
select 1
- 德比 –
values 1
- H2 –
select 1
- Firebird –
select 1 from rdb$database
我在我的博客上写过关于它的validation查询各种数据库 。
事先有一个类的例子,它根据JDBC驱动返回validationQuery。
还是有人有更好的解决办法?
对于带有Connector / J驱动程序的MySQL,有一个轻量级validation查询,它只是向服务器发送一个ping,并返回一个虚拟结果集。 validation查询可以是(或者应该以)开头,正好是以下string:
/* ping */
有关更多信息,请参阅MySQL驱动手册中的“ validation连接 ”
对于Informix,validation查询是从systables中select1