Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

JDBC PreparedStatement resulta em erro de sintaxe do MySQL


Na maioria dos bancos de dados, você não pode parametrizar nomes de objetos como nomes de tabelas, no MySQL você teoricamente pode, pois o MySQL Connector/J por padrão não usa parâmetros do lado do servidor, mas reescreve a consulta antes de enviá-la ao servidor. No entanto, o valor será inserido como uma string entre aspas e os nomes dos objetos não podem ser uma string entre aspas, portanto, ainda não funcionará.

Então INSERT INTO ? ou SELECT ... FROM ? não funcionará, pois produz INSERT INTO 'theTable' ou SELECT ... FROM 'theTable' .

Os nomes dos objetos precisam fazer parte da consulta real. Não use parâmetros para eles. A maioria dos outros bancos de dados (ou seus drivers) teria gerado uma exceção por ter um parâmetro nesta posição.