Equivalente de Java para mysql_real_escape_string de PHP ()

¿Hay un equivalente de Java a mysql_real_escape_string () de PHP?

Esto es para escapar de los intentos de inyección de SQL antes de pasarlos a Statement.execute ().

Sé que puedo usar PreparedStatement en su lugar, pero supongamos que estas son declaraciones de un solo disparo, por lo que prepararlas resultará enmenor rendimiento. Ya cambié el código para usar PreparedStatement, pero dada la forma en que se estructuró el código existente, una función de escape () haría que los cambios del código sean mucho más sencillos de revisar y mantener. Prefiero el código fácil de mantener, a menos que exista una razón convincente para la complejidad adicional. La base de datos también maneja los PreparedStatements de manera diferente, por lo que esto podría exponernos a errores en la base de datos que no hemos encontrado antes, lo que requiere más pruebas antes de lanzar a producción.

Apache StringEscapeUtils escapeSQL () solo se escapa de comillas simples.

Posdata: hay muchas sutilezas en el entorno que heredé que evité deliberadamente en mi pregunta.

Dos puntos a considerar:

1) Las declaraciones preparadas no son una panacea y no proporcionan una protección del 100% contra la inyección de SQL. Algunos controladores de base de datos instancian consultas parametrizadas utilizando concatenación de cadenas inseguras, en lugar de compilar previamente la consulta en una forma binaria. Además, si su SQL se basa en procedimientos almacenados, debe asegurarse de que los procedimientos almacenados no creen consultas de forma insegura.

2) La implementación de la declaración más preparada vincula la declaración a la conexión de la base de datos en la que se ejecutó la instancia. Si está utilizando la agrupación de conexiones de base de datos, debe tener cuidado de
use la referencia de la declaración preparada solo con la conexión en la que se preparó. Algunos mecanismos de agrupación implementan esto de manera transparente. De lo contrario, también podría agrupar las declaraciones preparadas o (más simple pero más general) crear una nueva declaración preparada para cada consulta.

Respuestas a la pregunta(6)

Su respuesta a la pregunta