Mysql
 sql >> Database >  >> RDS >> Mysql

Come sfuggire ai caratteri delle virgolette in MySQL e Java

Fammi provare a capire...

Il file in arrivo contiene virgolette. Vuoi inviarlo a un database. Quando lo recuperi dal database, desideri comunque che quelle virgolette siano presenti.

Quindi è solo da/verso il database che stai riscontrando il tuo problema?

Se è così allora io altamente sospetto che tu stia facendo qualcosa nell'ordine di:(lo sto avvolgendo in un disclaimer per evitare che gli ignari non fraintendano e tagliano/incollano le proprie applicazioni.;))

Cattivo:non farlo

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

Cattivo - non farlo

In tal caso, dovresti davvero utilizzare almeno i parametri dell'istruzione preparata. a) sarai meno vulnerabile alla spazzatura dannosa eliminando tutte le tue tabelle e b) non avrai problemi di fuga.

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

Nota che è anche più sicuro nel caso di cose come i CLOB e le specifiche di diverse implementazioni di database (sto pensando a te, Oracle>))

Se si tratta di un altro tipo di escape, ovvero verso/da XML o verso/da HTML, allora è diverso, ma è ben documentato in tutto il web.

Oppure fornisci un codice di esempio se sono totalmente fuori base.