sql >> Base de Datos >  >> RDS >> Mysql

Cómo escapar de los caracteres de comillas en MySQL y Java

Déjame tratar de entender...

El archivo entrante tiene comillas. Quiere enviarlo a una base de datos. Cuando lo recupere de la base de datos, todavía querrá que esas cotizaciones estén allí.

Entonces, ¿es solo hacia/desde la base de datos que tiene su problema?

Si es así, altamente Sospecho que está haciendo algo del orden de:(Lo envuelvo en un descargo de responsabilidad para evitar que los desprevenidos lo malinterpreten y corten/peguen en sus propias aplicaciones.;))

Mal - no hagas esto

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

Mal - no hagas eso

Si es así, entonces realmente debería usar los parámetros de la declaración preparada como mínimo. a) será menos vulnerable a la basura maliciosa que elimina todas sus tablas, yb) no tendrá ningún problema de escape.

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

Tenga en cuenta que también es más seguro en el caso de cosas como CLOB y los detalles de diferentes implementaciones de bases de datos (estoy pensando en usted, Oracle>))

Si se trata de algún otro tipo de escape, es decir, hacia/desde XML o hacia/desde HTML, entonces eso es diferente, pero está bien documentado en toda la web.

O proporcione algún código de ejemplo si estoy totalmente fuera de lugar.