Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment échapper les guillemets dans MySQL et Java

Laissez-moi essayer de comprendre...

Le fichier entrant contient des guillemets. Vous voulez l'envoyer à une base de données. Lorsque vous le récupérez de la base de données, vous voulez toujours que ces citations soient là.

Alors est-ce seulement vers/depuis la base de données que vous rencontrez votre problème ?

Si oui, alors je fortement soupçonnez que vous faites quelque chose de l'ordre de :(je l'enveloppe dans une clause de non-responsabilité pour empêcher les personnes sans méfiance de mal comprendre et de couper/coller dans leurs propres applications. ;))

Mauvais - ne faites pas ça

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

Mauvais - ne faites pas ça

Si tel est le cas, vous devriez vraiment utiliser au minimum les paramètres de l'instruction préparée. a) vous serez moins vulnérable aux ordures malveillantes supprimant toutes vos tables, et b) vous n'aurez aucun problème d'échappement.

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

Notez que c'est aussi plus sûr dans le cas de choses comme les CLOB et les spécificités des différentes implémentations de bases de données (je pense à vous, Oracle>))

S'il s'agit d'un autre type d'échappement, c'est-à-dire vers/depuis XML ou vers/depuis HTML, c'est différent, mais il est bien documenté sur tout le Web.

Ou fournissez un exemple de code si je suis totalement hors de propos.