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 我可以在JDBC准备的查询中使用多个语句吗?_Java_Sql_Mysql_Jdbc - Fatal编程技术网

Java 我可以在JDBC准备的查询中使用多个语句吗?

Java 我可以在JDBC准备的查询中使用多个语句吗?,java,sql,mysql,jdbc,Java,Sql,Mysql,Jdbc,我想在我的MySQL服务器上执行类似的操作: SET @id=(SELECT id FROM lookupTable WHERE field=?); (SELECT * FROM table2 WHERE id=@id) UNION (SELECT * FROM table3 WHERE id=@id) UNION (SELECT * FROM table4 WHERE id=@id); 这在控制台中可以正常工作,但在我的Java PreparedStatement中不行。它在“;”处引发语法

我想在我的MySQL服务器上执行类似的操作:

SET @id=(SELECT id FROM lookupTable WHERE field=?);
(SELECT * FROM table2 WHERE id=@id)
UNION
(SELECT * FROM table3 WHERE id=@id)
UNION
(SELECT * FROM table4 WHERE id=@id);
这在控制台中可以正常工作,但在我的Java PreparedStatement中不行。它在“;”处引发语法错误的异常分开陈述。我喜欢这个变量,因为我不必重复lookup子句,但如果必要,我可以重写它。对等连接在UNION子句中也有点笨拙

谢谢


Joshua

只需将其作为两个单独的查询(在一个连接中)运行,就会得到相同的结果。

JDBC从未支持解析分隔查询。每次调用都是对数据库的一次访问。也许您可以为每个单独的查询执行PreparedStatement.addBatch(),然后执行和检索两个结果集,从而达到您的目的?

我希望两次避免网络时间,但这似乎是不可避免的。也许这是一种避免SQL注入的安全功能。@Joshua,您可以批量查询服务器,避免多次网络访问。正如@ddimitrov所说,这似乎不可能直接实现。我没有尝试
PreparedStatement.addBatch()
。存储过程可能也适用于此。如果您对其他供应商感兴趣,则CUBRID数据库支持此功能。请参阅此论坛帖子。