问题描述
我使用DBCP池,我想使用 testOnBorrow 和 testOnReturn 来测试连接是否仍然有效。
不幸的是我必须设置属性validationQuery让它工作。
I use DBCP pool and I want use testOnBorrow and testOnReturn to test if connection is still valid.
Unfortunately I have to set property validationQuery to make it work.
问题: validationQuery应该有什么价值?
我知道,那个:validationQuery必须是一个SQL SELECT语句,至少返回一行。
I know, that: validationQuery must be an SQL SELECT statement, that returns at least one row.
问题是我们使用各种数据库(DB2,Oracle,hsqldb)。
Problem is that we use various databases (DB2, Oracle, hsqldb).
推荐答案
所有数据库不仅有一个validationQuery。在每个数据库上,你必须使用不同的validationQuery。
There is not only one validationQuery for all databases. On each database you have to use different validationQuery.
经过几个小时的谷歌搜索和测试后,我收集了这个表:
After few hours of googling and testing I have collected this table:
数据库验证查询说明
- hsqldb -
从INFORMATION_SCHEMA.SYSTEM_USERS中选择1 / code>
- Oracle -
从双
中选择1 - DB2 -
从sysibm.sysdummy1中选择1
- mysql -
选择1
- Microsoft SQL Server -
选择1
(在SQL-Server 9.0上测试,10.5 [2008]) - postgresql -
选择1
- ingres -
选择1
- derby -
值1
- H2 -
选择1
- Firebird -
从rdb $ database中选择1
- 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
(tested on SQL-Server 9.0, 10.5 [2008]) - postgresql -
select 1
- ingres -
select 1
- derby -
values 1
- H2 -
select 1
- Firebird -
select 1 from rdb$database
我在博客上写了这篇文章 - 。
I wrote about it on my blog - validation query for various databases.
事先有一个类的例子,它根据JDBC驱动程序返回validationQuery。
In advance there is an example of class, which return validationQuery according to JDBC driver.
或者有没有人有更好的解决方案?
Or does anybody have better solution?
这篇关于DBCP - 针对不同数据库的validationQuery的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!