2017-06-09 13 views
0

JavaのSql ResultSetの値に問題があります。 この値には一重引用符( ')があり、有効な値ではありません。正しい値はカンマ(、)になります。 この一重引用符( ')をコンマ(、)に変更します。Javaの結果セットから文字を削除します。

誤った値の例:期待される結果の7'8

例:私のクエリと私ResulSetの7,8

例:

String query = "SELECT width,height FROM SizeTable;"; 
rs = st.executeQuery(query); 

while(rs.next()){ 
    String width = rs.getString(1); 
    String height = rs.getString(2); <--- Here is on I get the error 
} 

String insert = "INSERT INTO SizeTable2 (Value1,Value2) VALUES('"+width+"','"+height+"')"; 

st.executeUpdate(insert); 

私は私を示しSQLメッセージが表示されます実行した後私のSQLステートメントで無効な構文エラー(「Insert Into」の幅と高さの値にしたい)。 MySQLでこの文字を変更することはできません。Javaでのみ変更できます。

+2

多分、あなたはどのようなエラーが発生するか教えてください。 –

+1

エラーがSQLステートメントまたはその結果であるかどうかまだ分かりません – SHG

+0

[なぜ誰かが私を助けることができますか?]実際の質問ではありませんか?](https://meta.stackoverflow.com/questions/284236/why-is-can-someone-help-me-not-an-actual-question)を入力してください。 –

答えて

0

、あなたの入力を取得するときは、String::replaceを使用することができます。

String height = rs.getString(2).replace("'", ","); 

をあなたが後でそれらを使用することができますので、ループの外で、あなたの変数を宣言する必要があります。

String width = ""; 
String height = ""; 
while(rs.next()){ 
    width = rs.getString(1); 
    height = rs.getString(2).replace("'", ","); 
} 

SQLがSQLインジェクションまたは構文エラーにオープンしたので、代わりにPreparedStatementを使用することをお勧めします。

String insert = "INSERT INTO SizeTable2 (Value1,Value2) VALUES(?, ?)"; 

try (PreparedStatement insert = connection.prepareStatement(insert)) { 
    insert.setString(1, width); 
    insert.setString(2, height); 
    insert.executeUpdate(); 
} 

あなたは空の値ので、私は挿入する前に値を確認することをお勧め挿入することができます。

if(!width.isEmpty() && !height.isEmpty()){ 
    //prepared statement 
} 

二つ目を、私たちはのために実数を使用することを前提としてい文字列を代わりに使用する理由は、データ型を変更してこのような問題を回避できることです。

+0

あなたはまだ同じ答えを持っています。いくつかの時間の前にあなたによって削除されたJavaソリューション。 –

+0

@PradeepSingh 2番目の注釈を読んでください。何を意味するのかを明確にすることができます。私は本当にあなたを得ません。 –

+0

YCF_L、私は7'8から離れたより多くの値を持っています。 これは私のフィールドのすべての無効な文字を修正するか、これだけですか? SQLインジェクション情報もありがとう!;) – SirGuacamole

関連する問題