Dmitresso Asked: 2017-12-15 21:03:00 +0800 CST2017-12-15 21:03:00 +0800 CST 2017-12-15 21:03:00 +0800 CST 验证查询 772 默认情况下,Oracle 数据库验证查询是“select 1 from dual ”。 雄猫说: ValidationQuery - 如果指定,此查询必须是返回至少一行的 SQL SELECT 语句。 根据上面的句子,我可以修改一个验证查询,它将是: 嵌套或条件查询 从我指定的另一个表 此表有一行和多列 我已经阅读了很多文档,但没有找到任何信息表明这是不可能的或至少是不正确的。 oracle jdbc 1 个回答 Voted Best Answer World Wide DBA 2017-12-15T22:40:07+08:002017-12-15T22:40:07+08:00 是的,它可以是任何有效的查询 - 来自Tomcat JDBC 文档: (字符串)将用于在将连接返回给调用者之前验证来自该池的连接的 SQL 查询。如果指定,此查询不必返回任何数据,它只是不能抛出 SQLException。默认值为空。如果未指定,连接将通过 isValid() 方法进行验证。示例值为 SELECT 1(mysql)、select 1 from dual(oracle)、SELECT 1(MS Sql Server) 您询问了有关使用嵌套查询、不同表和多列的问题,所以我给您一些思考: 每次应用程序从池中请求连接时validationQuery都会执行。这是在应用程序发出它自己的查询之前 - 所以至少你对数据库发出两个查询。考虑到这一点,为什么要使查询更复杂?您所要做的就是无缘无故地在数据库服务器上添加不必要的负载 - AFAIK 您无法在 Java 应用程序中看到输出,因为它在连接传递给客户端之前发生在容器级别。validationQuery 保持简单并使用推荐的查询之一。
是的,它可以是任何有效的查询 - 来自Tomcat JDBC 文档:
您询问了有关使用嵌套查询、不同表和多列的问题,所以我给您一些思考:
每次应用程序从池中请求连接时
validationQuery
都会执行。这是在应用程序发出它自己的查询之前 - 所以至少你对数据库发出两个查询。考虑到这一点,为什么要使查询更复杂?您所要做的就是无缘无故地在数据库服务器上添加不必要的负载 - AFAIK 您无法在 Java 应用程序中看到输出,因为它在连接传递给客户端之前发生在容器级别。validationQuery
保持简单并使用推荐的查询之一。