0

'query' 累积查询,一个是 INSERT INTO root:

public StringBuffer query = new StringBuffer("");
private String tmp="";

tmp="INSERT INTO `root` (`root_`) VALUES ('";
tmp=tmp.concat(root);
tmp=tmp.concat("');");
query.append(tmp);

PreparedStatement ps = con.prepareStatement(query.toString());
ps.executeUpdate();
query.delete(0, query.length());

我第一次这样做通常是编译的。

System.out.println(查询); 显示这个:

INSERT INTO `root` (`root_`) VALUES ('value1');

但第二次“查询”包含:

 INSERT INTO `rel_root_doc` (`freq`,`id_doc`, `id_root`) VALUES (1,1,1);
 INSERT INTO `root` (`root_`) VALUES ('value2');

我遇到了这个错误:你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法以使用 near 。

'INSERT INTO `root` (`root_`) VALUES ('value2')' at line 2

但是如果我在 MySQLWorkbench 中复制并粘贴相同的代码,它就完美了。

感谢阅读。

4

2 回答 2

1

AStatement只能包含一个 SQL 查询。每个查询都需要一个Statement(或)。PreparedStatement

于 2013-06-09T07:02:23.430 回答
1

您可以使用 MySQL JDBC 驱动程序启用多个查询,其配置属性名为allowMultiQueries.

但是,我不建议启用此选项,因为它会削弱安全性。您为黑客实施 SQL 注入攻击创造了更多机会。

而且我记得多查询无论如何都不适用于准备好的语句(但我还没有对此进行测试以确定)。

于 2013-06-09T07:16:12.077 回答