15

データベース (>10K) から用語を読み取ろうとしていますが、その用語を別のクエリで使用しています。Oracle で次のエラーが発生します。

引用文字列が正しく終了していません'

やった

term.replaceAll("'", "\\'");

しかし、それは私から仕事をしていないようです。さらに、これらの用語は、テキストに変換されたときのドキュメントからのトークンです。この問題を解決できる正規表現はありますか?

正確な SQL クエリは次のとおりです。

String sql = "Select * from indexDB where (DocID=" + d.getDocId() + "and Term='" + term + "')";

私はJavaを使用しています。交換は私にはうまくいきません。

4

1 に答える 1

38

一重引用符を繰り返すことでエスケープできます。

term.replaceAll("'","''");

さらに優れたオプションは、パラメーター化されたクエリです。たとえば、クライアントの言語を知っている必要があります。

于 2012-07-27T18:45:25.310 に答える