基本的に私はString str="That's an apple and that's not an apple, hah. Not funny."
です。参考:文字列はランダムで、任意のUnicode文字を含むことができます。私は\
の前にすべてを追加する必要があります'
& "
私は行の値として私のmysqlのdbに保存することができます。もしあなたがそうであれば、他のキャラクターが私に\
を加えるのに必要なものを教えてください。javaを使用してmysqlの文字列として引用符を保存する方法は?
誰でも私に\
を追加する方法を教えてもらうと本当にありがたいです。'
& "
です。勧告に基づいて
あなたは私がこれを行うに来て起こる与えた:
public String UpdateDBQuery(String query, int hm) throws IOException{
try {
DBConnect mysql_DB = new DBConnect();
PreparedStatement ps = con.prepareStatement(query);
for(int i=0;i<hm;i++){
ps.setString(i, query);
}
int ursa = ps.executeUpdate(query);
if (ursa == 0) {
throw new SQLException("Creating user failed, no rows affected.");
} else {
return "succeed";
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
そして、私が呼び出していたクエリ:
mysql.UpdateDBQuery("UPDATE tb1 SET ste='"+str1+"' WHERE pd='"+pd+"'", 1);
そして
mysql.UpdateDBQuery("INSERT INTO list(str, str1, str2, str3, str4, str5) VALUES ('"+str+"', '"+str1+"', '"+str2+"', '"+str3+"', '"+str4+"','stackdefaultimage.png')", 6);
を
しかし、私は例外を取得しています
java.sql.SQLException:パラメータインデックスが範囲外です(0 <)。
"私はそれをカラム値として自分のmysqlデータベースに保存することができます" - あなたはSQL文に値を埋め込むように思えます。 **これをしないでください。**代わりにパラメータ化されたSQLを使用して、パラメータの値を元の文字列として設定します。これはより簡単で信頼性が高く、SQLインジェクション攻撃を避ける最良の方法です。 –
なぜそれをしないのか、そして何をする代わりにどうすればいいのですか?http://bobby-tables.com –
@JonSkeet申し訳ありませんが、私は行の価値を意味していました。私は直接mysqlの出力結果をクライアントに送信しません。mysqlから必要なデータを取得してクライアントに送信しています。例外が発生した場合、何かに返信しています。私はそれがmysqlの注射の権利からperventかもしれないと思いますか? –