sql >> Database >  >> RDS >> Mysql

JDBC PreparedStatement resulteert in MySQL-syntaxisfout

In de meeste databases kun je objectnamen zoals tabelnamen niet parametriseren, in MySQL kan dat theoretisch omdat MySQL Connector/J standaard geen server-side parameters gebruikt, maar in plaats daarvan de query herschrijft voordat deze naar de server wordt verzonden. De waarde wordt echter ingevoegd als tekenreeks tussen aanhalingstekens en objectnamen kunnen geen tekenreeksen tussen aanhalingstekens zijn, dus het werkt nog steeds niet.

Dus INSERT INTO ? of SELECT ... FROM ? zal niet werken, omdat het INSERT INTO 'theTable' . produceert of SELECT ... FROM 'theTable' .

De objectnamen moeten deel uitmaken van de eigenlijke query. Gebruik er geen parameters voor. De meeste andere databases (of hun stuurprogramma's) zouden een uitzondering hebben gemaakt voor het hebben van een parameter op deze positie.



  1. Bool-ondersteuning Oracle SQL

  2. POWER() Voorbeelden in SQL Server

  3. Wat is het langst mogelijke wereldwijde telefoonnummer dat ik zou moeten overwegen in SQL varchar(lengte) voor telefoon?

  4. Doe mee aan een telquery op generation_series() en haal null-waarden op als '0'