Mysql
 sql >> Database >  >> RDS >> Mysql

JDBC PreparedStatement genera un errore di sintassi MySQL

Nella maggior parte dei database non è possibile parametrizzare i nomi degli oggetti come i nomi delle tabelle, in MySQL teoricamente è possibile poiché MySQL Connector/J per impostazione predefinita non utilizza parametri lato server, ma invece riscrive la query prima di inviarla al server. Tuttavia il valore verrà inserito come stringa tra virgolette e i nomi degli oggetti non possono essere una stringa tra virgolette, quindi non funzionerà comunque.

Quindi INSERT INTO ? o SELECT ... FROM ? non funzionerà, poiché produce INSERT INTO 'theTable' o SELECT ... FROM 'theTable' .

I nomi degli oggetti devono far parte della query effettiva. Non utilizzare parametri per loro. La maggior parte degli altri database (o dei relativi driver) avrebbero generato un'eccezione per avere un parametro in questa posizione.