本文介绍了DBCP - 针对不同数据库的validationQuery的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 13:30