Java BasicDataSource.setValidationQuery()是否始终安全?
在使用Apache commons DBCP包时,是否使用Java BasicDataSource.setValidationQuery()是否始终安全?,java,sql,database,apache-commons,Java,Sql,Database,Apache Commons,在使用Apache commons DBCP包时,是否使用BasicDataSource.setValidationQuery(字符串查询)始终可以安全使用 让我们考虑这个代码片段: BasicDataSource bsd = new BasicDataSource(); bsd.setValidationQuery("SELECT 1;"); 是否可以保证更新版本的Apache Commons DBCP会将此查询发送到所连接的数据库?如果较新版本,或者甚至是mysql连接器将使用一个小型内置
BasicDataSource.setValidationQuery(字符串查询)
始终可以安全使用
让我们考虑这个代码片段:
BasicDataSource bsd = new BasicDataSource();
bsd.setValidationQuery("SELECT 1;");
是否可以保证更新版本的Apache Commons DBCP会将此查询发送到所连接的数据库?如果较新版本,或者甚至是mysql连接器
将使用一个小型内置SQL查询引擎,该引擎只处理与永久数据库无关的SQL查询(因此可能选择basic数据,或者只处理临时表)
如果是这样的话,什么样的查询才能确保它真正调用数据库
我问这个问题是因为我昨天在使用MySQL客户端时有过这样的经历,在这个客户端中,我对一个非常简单的查询进行了基准测试,比如
SELECT 1代码>实际上根本不会被发送到数据库。选择一些不可能来自数据库以外任何地方的内容?例如,使用当前时间戳作为参数调用存储函数?另外:“注意:一旦池被初始化,此方法当前无效。池在第一次调用以下方法之一时被初始化:getConnection、setLogwriter、setLoginTimeout、getLoginTimeout、getLogWriter。”()