当前位置: 首页 > 知识库问答 >
问题:

DBCP-不同数据库的validationQuery

阎辰钊
2023-03-14

我使用DBCP池,我想使用testOnBrow和testOnBack来测试连接是否仍然有效。
不幸的是,我必须设置属性validationQuery才能使其工作。

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

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

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

共有3个答案

赫连实
2023-03-14

对于Informix,验证查询是,从系统表中选择1

姬锐
2023-03-14

对于带有Connector/J驱动程序的MySQL,有一个轻量级的验证查询,它只向服务器发送一个ping并返回一个伪结果集。验证查询可以(或应该以)正好是以下字符串:

/* ping */

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

葛高澹
2023-03-14

并非所有数据库只有一个validationQuery。在每个数据库上,您必须使用不同的validationQuery。

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

数据库验证查询注释

  • hsqldb-从INFORMATION_SCHEMA中选择1。SYSTEM_USERS
  • Oracle-从对偶中选择1
  • 从sysibm.sysdummy1中选择1
  • mysql-选择1
  • 微软SQL服务器-选择1(在SQL上测试-Server 9.0,10.5[2008])
  • postgresql-选择1
  • 输入-选择1
  • derby-值1
  • H2-选择1
  • Firebird-从rdb$数据库中选择1
  • MariaDb-选择1
  • Informix-从系统中选择1
  • 蜂巢-选择1
  • Impala-选择1

我在我的博客上写了关于各种数据库的验证查询。

前面有一个类的示例,它根据JDBC驱动程序返回validationQuery。

或者有人有更好的解决办法吗?

 类似资料:
  • 出于安全原因,我希望在Redis中使用类似的代码,因为目前我可以使用,但我必须将其添加到每个希望连接到Redis的应用程序中。(至少有一种方法可以为使用多个密码吗? 我可以用一个应用程序连接到一个数据库,但是这个应用程序也可以切换到另一个数据库。(我至少可以用某种方法阻止这种切换吗?) 出于性能原因,我希望避免并行运行多个redis实例。

  • 问题内容: 您将如何在不同的环境中处理跨数据库查询。例如,db1-development和db2-development,db1-production和db2-production。 如果要在从db2到db1的开发中进行跨数据库查询,则可以使用完全限定的名称,即[db1-development]。[schema]。[table]。但是,如何在不同环境之间维护查询和存储过程?[db1-develop

  • 问题内容: 是否可以对位于同一服务器上的不同数据库进行选择(或插入)语句?如果是,怎么办? 问题答案: 您将使用以下语法指定数据库 例:

  • 问题内容: 例如,mysql引用表名使用 注意` 其他数据库是否曾经使用过不同的char来引用其表名 问题答案: 引号的这种使用称为定界标识符。这是SQL的重要组成部分,因为否则您将不能使用以下标识符(例如表名和列名): 包含空格:“我的桌子” 包括特殊字符和标点符号:“我的表格” 包括国际字符:“私のテーブル” 区分大小写:“ MyTable” 匹配SQL关键字:“表” 标准SQL语言对定界标识

  • 使用JDBC驱动程序,我如何使用来自不同查询的多个结果集,而不不断地打开和关闭连接,因为我正在提取所需的w.e并将其传递给另一个方法。每次打开新的conn、语句和结果集时 我试图在一个方法中使用多个结果集,但它一直抛出异常,称结果集已关闭。我没有太多的SqlServver经验,所以任何指导都会有所帮助:-)

  • 问题内容: 我想知道在InnoDB中是否可以有一个带有 外键的 引用另一个表的表? 如果是这样,该怎么办? 问题答案: 我在http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key- constraints.html 上没有看到任何限制。 因此,只需使用 otherdb.othertable ,您会很好。