Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JDBC PreparedStatement führt zu einem MySQL-Syntaxfehler

In den meisten Datenbanken können Sie Objektnamen nicht wie Tabellennamen parametrisieren, in MySQL können Sie das theoretisch, da MySQL Connector/J standardmäßig keine serverseitigen Parameter verwendet, sondern die Abfrage neu schreibt, bevor sie an den Server gesendet wird. Der Wert wird jedoch als Zeichenfolge in Anführungszeichen eingefügt, und Objektnamen können keine Zeichenfolge in Anführungszeichen sein, daher funktioniert es immer noch nicht.

Also INSERT INTO ? oder SELECT ... FROM ? wird nicht funktionieren, da es INSERT INTO 'theTable' erzeugt oder SELECT ... FROM 'theTable' .

Die Objektnamen müssen Teil der eigentlichen Abfrage sein. Verwenden Sie keine Parameter für sie. Die meisten anderen Datenbanken (oder ihre Treiber) hätten eine Ausnahme ausgelöst, wenn sich an dieser Position ein Parameter befunden hätte.