sql >> Database >  >> RDS >> Mysql

Hoe te ontsnappen aan aanhalingstekens in MySQL en Java

Laat me proberen het te begrijpen...

Het inkomende bestand bevat aanhalingstekens. U wilt het naar een database sturen. Als je het terugkrijgt uit de database, dan wil je nog steeds dat die citaten er zijn.

Dus is het alleen van/naar de database dat u uw probleem ondervindt?

Zo ja, dan zeer vermoed dat je iets doet in de volgorde van:(ik stop het in een disclaimer om te voorkomen dat nietsvermoedens het verkeerd begrijpen en knippen/plakken in hun eigen applicaties.;))

Slecht - doe dit niet

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

Slecht - doe dat niet

Als dat zo is, moet u echt minimaal de parameters van de voorbereide verklaring gebruiken. a) u bent minder kwetsbaar voor kwaadwillende rommel die al uw tabellen verwijdert, en b) u zult geen ontsnappingsproblemen hebben.

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

Merk op dat het ook veiliger is in het geval van zaken als CLOB's en de bijzonderheden van verschillende database-implementaties (ik denk aan jou, Oracle>))

Als het een ander soort ontsnapping is, dat wil zeggen van/naar XML of van/naar HTML, dan is dat anders, maar het is overal op internet goed gedocumenteerd.

Of geef een voorbeeldcode als ik er helemaal naast zit.



  1. BESTELLEN OP alfabet eerst dan volgen op nummer

  2. Microsoft Access DevCon in Wenen, Oostenrijk, 1 – 2 april 2017

  3. Wat zijn de voordelen van UPDATE LOW_PRIORITY en INSERT DELAYED INTO?

  4. Kan php PDO twee resultatensets ophalen? En zo ja, wat is beter 1 resultaatset of meer dan 1?