DBCP – validation查询不同的数据库

我使用DBCP池,我想使用testOnBorrowtestOnReturn来testing连接是否仍然有效。
不幸的是,我必须设置属性validationQuery使其工作。

问题: validationQuery应该有什么价值?

我知道,validationQuery必须是一个SQL SELECT语句,它返回至less一行。

问题是我们使用各种数据库(DB2,Oracle,hsqldb)。

所有数据库不仅有一个validationQuery。 在每个数据库上,你必须使用不同的validationQuery。

经过几个小时的谷歌search和testing,我收集了这张表格:

数据库validation查询注释

  • hsqldbselect 1 from INFORMATION_SCHEMA.SYSTEM_USERS
  • Oracleselect 1 from dual
  • DB2select 1 from sysibm.sysdummy1
  • MySQLselect 1
  • Microsoft SQL Serverselect 1 (在SQL Server 9.0,10.5 [2008]上testing)
  • postgresqlselect 1
  • 英语select 1
  • 德比values 1
  • H2select 1
  • Firebirdselect 1 from rdb$database

我在我的博客上写过关于它的validation查询各种数据库 。

事先有一个类的例子,它根据JDBC驱动返回validationQuery。

还是有人有更好的解决办法?

对于带有Connector / J驱动程序的MySQL,有一个轻量级validation查询,它只是向服务器发送一个ping,并返回一个虚拟结果集。 validation查询可以是(或者应该以)开头,正好是以下string:

 /* ping */ 

有关更多信息,请参阅MySQL驱动手册中的“ validation连接 ”

对于Informix,validation查询是从systables中select1