sql >> Database >  >> RDS >> Mysql

MySQLSyntaxErrorException in de buurt van ? bij het uitvoeren van PreparedStatement

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:U heeft een fout in uw SQL-syntaxis; controleer de handleiding die overeenkomt met uw MySQL-serverversie voor de juiste syntaxis om te gebruiken in de buurt van '? of Lidnaam =?' op regel 1

MySQL begrijpt de betekenis van ? in de SQL-query. Het is inderdaad een ongeldige SQL-syntaxis. Dus op de een of andere manier is het niet vervangen door PreparedStatement . En raad eens?

PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);        
rs = s.executeQuery(query); // Fail!

U overschrijft de voorbereide query met de originele query! U moet de argumentloze PreparedStatement#executeQuery() methode in plaats van Statement#executeQuery(String) .

PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);        
rs = s.executeQuery(); // OK!

Los van het probleem, lekt uw code bronnen. De DB zal na enkele uren opraken en uw toepassing zal crashen. Om dit op te lossen, moet u het JDBC-idioom van het sluiten van Connection volgen , Statement en ResultSet in de finally blok van de try blok waar ze zijn verkregen. Bekijk de JDBC-basishandleiding voor meer details.



  1. Fix "ERROR 1054 (42S22):Onbekende kolom '...' in 'bestellingsclausule' bij gebruik van UNION in MySQL

  2. 4 manieren om een ​​getal op te maken zonder decimalen in Oracle

  3. Hoe STRCMP() werkt in MariaDB

  4. SQLite groeperen op / uren, dagen, weken, jaar tellen