2011-02-07 19 views
0

こんにちは私はJavaでSQLクエリを読み込んで処理しますが、クエリの中には小さなツールを書いています 一重引用符( ')は別の単一引用符の中に埋め込まれています不適切なクエリを置き換える正規表現

オリジナルクエリ

insert into person values ('kumar's kandan', 23, 'Male') 

前:私は前処理に、正規表現のクエリ

例を見つけようとしていますので、「tは、クエリを処理することができplzの詳細については、以下の例を参照してください処理されたクエリ

insert into person values ('kumar''s kandan', 23, 'Male') 
+2

これは、元のソリューションのハックのようです。クエリを構築する前に値をエスケープしてください。これは疑問をひそめます:元の問題の後にあなたはなぜ行っていないのですか?さらに多くの場合、元の問題を解決するのが最善の方法です。迷子な引用を見つけて修正するためには、100%の実用的な解決策は決して得られません。 –

答えて

1

SQLを生成するときに、これらの文字をエスケープするには、PreparedStatementなどを使用する必要があります。このツールは、問題を即座に修正するのではなく、クエリがすでに正しいと仮定しているように思えます。

0

あなたは前と後ろの単語の文字を持っているすべての単一引用符置き換えることができます。もちろん、これはすべてが正しくエスケープされることを保証するものではありませんが

str = str.replaceAll("(?<=\\w)'(?=\\w)","''"); 

を。

関連する問題