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

JDBC PreparedStatement da como resultado un error de sintaxis de MySQL

En la mayoría de las bases de datos, no puede parametrizar los nombres de los objetos como los nombres de las tablas, en MySQL teóricamente puede hacerlo, ya que MySQL Connector/J no usa parámetros del lado del servidor de forma predeterminada, sino que reescribe la consulta antes de enviarla al servidor. Sin embargo, el valor se insertará como una cadena entre comillas y los nombres de los objetos no pueden ser una cadena entre comillas, por lo que seguirá sin funcionar.

Entonces INSERT INTO ? o SELECT ... FROM ? no funcionará, ya que produce INSERT INTO 'theTable' o SELECT ... FROM 'theTable' .

Los nombres de los objetos deben ser parte de la consulta real. No utilice parámetros para ellos. La mayoría de las demás bases de datos (o sus controladores) habrían generado una excepción por tener un parámetro en esta posición.