DBCP - 验证不同数据库的查询

我使用 DBCP 池,并且我想使用 testOnBorrowtestOnReturn 来测试连接是否仍然有效。
不幸的是,我必须设置属性验证查询才能使其正常工作。

问:验证查询中应包含什么值?

我知道,验证查询必须是一个SQL SELECT语句,至少返回一行。

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


答案 1

对于所有数据库,不仅有一个验证查询。在每个数据库上,您必须使用不同的验证查询。

经过几个小时的谷歌搜索和测试,我收集了这个表:

数据库验证查询注释

  • hsqldb - select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
  • 神谕 - select 1 from dual
  • 断续器 - select 1 from sysibm.sysdummy1
  • mysql - select 1
  • microsoft SQL Server - (在 SQL-Server 9.0, 10.5 [2008] 上测试)select 1
  • postgresql - select 1
  • 安格尔 - select 1
  • 德比 - values 1
  • H2 - select 1
  • 火鸟 - select 1 from rdb$database
  • 玛丽亚德 - select 1
  • Informix - select 1 from systables
  • 蜂房 - select 1
  • 高角羚 - select 1

我在我的博客上写了关于它的文章 - 各种数据库的验证查询

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

还是有没有人有更好的解决方案?


答案 2

对于具有连接器/J 驱动程序的 MySQL,有一个轻量级验证查询,该查询仅向服务器发送 ping 并返回虚拟结果集。验证查询可以(或应以)正好以下字符串开头:

/* ping */

有关更多信息,请参阅MySQL驱动程序手册中的验证连接


推荐