com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException :Vous avez une erreur dans votre syntaxe SQL ; consultez le manuel correspondant à la version de votre serveur MySQL pour connaître la bonne syntaxe à utiliser près de '? ou NomMembre =?' à la ligne 1
MySQL ne comprend pas la signification de ?
dans la requête SQL. C'est en effet une syntaxe SQL invalide. Donc, d'une manière ou d'une autre, il n'a pas été remplacé par PreparedStatement
. Et devinez quoi ?
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(query); // Fail!
Vous remplacez la requête préparée par la requête d'origine ! Vous devez appeler le PreparedStatement#executeQuery()
méthode au lieu de Statement#executeQuery(String)
.
PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);
rs = s.executeQuery(); // OK!
Sans rapport avec le problème, votre code perd des ressources. La base de données en manquera après plusieurs heures et votre application plantera. Pour résoudre ce problème, vous devez suivre l'idiome JDBC de fermeture Connection
, Statement
et ResultSet
dans le finally
bloc du try
bloc où ils ont été acquis. Consultez le tutoriel de base JDBC
pour plus de détails.