2017-06-27 11 views
1

私はある程度のchar [] originalCharArrayを持っています。SQL挿入の前にcharArrayをエスケープする最速の方法

"Hello' World" ---> "Hello'' World" 

行うための最速の方法は何ですか:

は、私が[] returnCharArrayなcharは「元のchar []に表示されますたびに、別の1がそう追加されるという新しい文字を作成したいですそう? returnCharArrayをx2のoriginalCharArrayのサイズに定義し、元のcharArrayから文字を1つ1つコピーすることを考えました(必要に応じて余分なスペースを追加します)。

また、StringBuildingについて考えましたが、文字列に変換してからCharArrayに変換する必要があります。

ベストプラクティスは何ですか?

+2

あなたはこれを自動的に行うためのPreparedStatementを使用することができます。 SQLインジェクションを防止しようとしている場合、単なるアポストロフィ以上のものがあります。 –

答えて

1

あなたは'''を置き換えるためにreplaceAllを使用することがあります。

char[] c = new char[]{'H','e','l','l','o','\'',' ','W','o','r','l','d'}; 
String s = String.valueOf(c); 
System.out.println("Before : " + s); 

s = s.replaceAll("'", "''"); 
System.out.println("After : " + s); 

char[] c_modified = s.toCharArray(); 

System.out.println(Arrays.toString(c_modified)); 

出力:

Before : Hello' World 
After : Hello'' World 
[H, e, l, l, o, ', ', , W, o, r, l, d] 
2

これを行うためにStringを使用する方法については、おそらく最も簡単で痛みが最小です。新しい文字列を作成し、一重引用符を二重引用符に置き換えるだけです。

String str = new String(originalCharArray); 
str = str.replaceAll("'", "''"); 
char[] newCharArray = str.toCharArray(); 

Demo

関連する問題