DBCP - 验证不同数据库的查询
2022-08-31 11:47:01
我使用 DBCP 池,并且我想使用 testOnBorrow 和 testOnReturn 来测试连接是否仍然有效。
不幸的是,我必须设置属性验证查询才能使其正常工作。
问:验证查询中应包含什么值?
我知道,验证查询必须是一个SQL SELECT语句,至少返回一行。
问题是我们使用各种数据库(DB2,Oracle,hsqldb)。
我使用 DBCP 池,并且我想使用 testOnBorrow 和 testOnReturn 来测试连接是否仍然有效。
不幸的是,我必须设置属性验证查询才能使其正常工作。
问:验证查询中应包含什么值?
我知道,验证查询必须是一个SQL SELECT语句,至少返回一行。
问题是我们使用各种数据库(DB2,Oracle,hsqldb)。
对于所有数据库,不仅有一个验证查询。在每个数据库上,您必须使用不同的验证查询。
经过几个小时的谷歌搜索和测试,我收集了这个表:
数据库验证查询注释
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
select 1 from dual
select 1 from sysibm.sysdummy1
select 1
select 1
select 1
select 1
values 1
select 1
select 1 from rdb$database
select 1
select 1 from systables
select 1
select 1
我在我的博客上写了关于它的文章 - 各种数据库的验证查询。
事先有一个类的例子,它根据JDBC驱动程序返回verspectquery。
还是有没有人有更好的解决方案?
对于具有连接器/J 驱动程序的 MySQL,有一个轻量级验证查询,该查询仅向服务器发送 ping 并返回虚拟结果集。验证查询可以(或应以)正好以下字符串开头:
/* ping */
有关更多信息,请参阅MySQL驱动程序手册中的验证连接