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

时间:2010-07-29 19:19:35

标签: 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中工作。它会在';'处引发语法错误的异常分开陈述。我喜欢变量因为我不必重复查找子句,但如果有必要我可以重写它。对于UNION条款,等效的JOIN也有点尴尬。

谢谢,

约书亚

2 个答案:

答案 0 :(得分:5)

JDBC从未支持解析分隔查询。每次调用都是一次数据库之旅。也许你可以实现你为每个单独的查询做PreparedStatement.addBatch()的意思,然后执行和检索两个结果集?

答案 1 :(得分:2)

只需将两个单独的查询(在一个连接中)运行就可以得到相同的结果。