Mysql
 sql >> Base de données >  >> RDS >> Mysql

JDBC PreparedStatement entraîne une erreur de syntaxe MySQL

Dans la plupart des bases de données, vous ne pouvez pas paramétrer les noms d'objets comme les noms de table, dans MySQL, vous pouvez théoriquement car MySQL Connector/J par défaut n'utilise pas de paramètres côté serveur, mais à la place, il réécrit la requête avant de l'envoyer au serveur. Cependant, la valeur sera insérée sous forme de chaîne entre guillemets et les noms d'objet ne peuvent pas être une chaîne entre guillemets, donc cela ne fonctionnera toujours pas.

Donc INSERT INTO ? ou SELECT ... FROM ? ne fonctionnera pas, car il produit INSERT INTO 'theTable' ou SELECT ... FROM 'theTable' .

Les noms d'objet doivent faire partie de la requête réelle. N'utilisez pas de paramètres pour eux. La plupart des autres bases de données (ou leurs pilotes) auraient levé une exception pour avoir un paramètre à cette position.