0

「クエリ」はクエリを蓄積し、1 つは INSERT INTO ルートです。

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');

しかし、2 回目の「クエリ」には以下が含まれます。

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

そして、私はこのエラーを抱えています: SQL 構文にエラーがあります。near を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

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

しかし、MySQLWorkbench で同じコードをコピーして貼り付けると、完全に機能します。

読んでくれてありがとう。

4

2 に答える 2

1

という構成プロパティを使用して、MySQL JDBC ドライバーで複数のクエリを有効にすることができますallowMultiQueries

ただし、セキュリティが低下するため、このオプションを有効にすることはお勧めしません。ハッカーが SQL インジェクション攻撃を実行する機会が増えます。

とにかく、マルチクエリは準備されたステートメントでは機能しないという記憶があります(ただし、これを確実にテストしていません)。

于 2013-06-09T07:16:12.077 に答える