Grundsätzlich habe ich String str="That's an apple and that's not an apple, hah. Not funny."
. Zu Ihrer Information: Die Zeichenfolge könnte zufällig sein und könnte ein beliebiges Unicode-Zeichen enthalten. Ich muss \
vor allen '
& "
hinzufügen, damit ich es in meiner MySQL-Datenbank als Zeilenwert speichern konnte. Und wenn du könntest, würdest du mir vorher sagen, welche anderen Zeichen ich hinzufügen muss \
.Wie speichern Sie Anführungszeichen als Zeichenfolge in MySQL mit Java?
würde ich wirklich schätzen, wenn jemand mir sagen, wie \
vor allem '
& "
hinzuzufügen.
auf Empfehlung Basierend gab Sie mir, dass ich zufällig kommen, dies zu tun:
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;
}
Und die Anfragen, die dann nenne ich:
mysql.UpdateDBQuery("UPDATE tb1 SET ste='"+str1+"' WHERE pd='"+pd+"'", 1);
Und
mysql.UpdateDBQuery("INSERT INTO list(str, str1, str2, str3, str4, str5) VALUES ('"+str+"', '"+str1+"', '"+str2+"', '"+str3+"', '"+str4+"','stackdefaultimage.png')", 6);
Aber ich bekomme ein excepti auf dem Sprichwort:
java.sql.SQLException: Parameterindex außerhalb des Bereichs (0 < 1).
"so könnte ich es in meiner mysql db als Spaltenwert speichern" - es klingt wie Sie versuchen, den Wert in Ihre SQL-Anweisung einzubetten. ** Tun Sie das nicht. ** Verwenden Sie stattdessen parametrisiertes SQL und legen Sie einfach den Wert Ihres Parameters als ursprüngliche Zeichenfolge fest. Dies ist einfacher und zuverlässiger und ist bei weitem der beste Weg, SQL-Injection-Angriffe zu vermeiden. –
Mehr darüber, warum nicht zu tun, und was stattdessen zu tun: http://bobby-tables.com –
@JonSkeet Sorry, ich meinte Zeilenwert. BTW Ich sende nicht direkt mysql Ausgabe-Ergebnis an den Client Ich bekomme die erforderlichen Daten von mysql respose und sende es an den Client und wenn eine Ausnahme passiert, ich antworte mit etwas ging schief. Ich denke, das könnte von Mysql Injektion perfect sein? –