Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BasicDataSource.setValidationQuery()是否始终安全?_Java_Sql_Database_Apache Commons - Fatal编程技术网

Java BasicDataSource.setValidationQuery()是否始终安全?

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连接器将使用一个小型内置

在使用Apache commons DBCP包时,是否使用
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。”()