Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So maskieren Sie Anführungszeichen in MySQL und Java

Lassen Sie mich versuchen, es zu verstehen...

Die eingehende Datei enthält Anführungszeichen. Sie möchten es an eine Datenbank senden. Wenn Sie es aus der Datenbank zurückerhalten, möchten Sie, dass diese Zitate immer noch da sind.

Ist es also nur zur/von der Datenbank, dass Sie Ihr Problem haben?

Wenn ja, dann sehr vermuten, dass Sie etwas in der folgenden Reihenfolge tun:(Ich verpacke es in einen Haftungsausschluss, um die Ahnungslosen vor Missverständnissen und Ausschneiden/Einfügen in ihre eigenen Anwendungen zu bewahren.;))

Schlecht - tu das nicht

String sql = "insert into foo (bar,baz) values(" +myValue1 + ", " + myValue2 + ")";
Statement stmt = connection.createStatement();
stmt.executeUpdate(sql);

Schlecht - tu das nicht

Wenn ja, dann sollten Sie wirklich mindestens die Parameter der vorbereiteten Anweisung verwenden. a) Sie werden weniger anfällig für böswilligen Müll, der alle Ihre Tabellen löscht, und b) Sie werden keine Fluchtprobleme haben.

String sql = "insert into foo (bar, baz) values( ?, ? )";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, myValue1);
stmt.setString(2, myValue2);
stmt.executeUpdate();

Beachten Sie, dass es auch im Fall von Dingen wie CLOBs und den Besonderheiten verschiedener Datenbankimplementierungen sicherer ist (ich denke an Sie, Oracle>))

Wenn es sich um eine andere Art von Escaping handelt, dh nach/von XML oder nach/von HTML, dann ist das anders, aber es ist im ganzen Web gut dokumentiert.

Oder geben Sie einen Beispielcode an, wenn ich völlig falsch liege.