Maison >base de données >tutoriel mysql >Pourquoi « s.executeQuery(query) » provoque-t-il une MySQLSyntaxErrorException « près de « ? » » ?
MySQLSyntaxErrorException près de "?" : Résolution des erreurs de syntaxe avec PreparedStatements
L'exécution de PreparedStatements en Java peut parfois rencontrer des erreurs de syntaxe, dont l'une est la redoutée exception "près de '?'". Pour comprendre sa cause et sa résolution, examinons le problème.
Description du problème
Les tentatives d'exécution d'un PreparedStatement génèrent une exception MySQLSyntaxErrorException avec le code d'erreur 1064, indiquant une syntaxe. erreur. La substitution des valeurs dans la requête à l'aide du navigateur de requêtes MySQL réussit, ce qui suggère que le problème réside dans le code.
Code pertinent
String query = "select MemberID, MemberName from members where MemberID = ? or MemberName = ?"; Connection conn = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD); PreparedStatement s = conn.prepareStatement(query); s.setInt(1, 2); s.setString(2, "zen"); ResultSet rs = s.executeQuery(query); // Error
Exception
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? or MemberName = ?' at line 1
Solution
La La cause première de cette erreur est que MySQL rencontre un « ? » non traité. dans la requête SQL. Pour le résoudre, suivez ces étapes :
ResultSet rs = s.executeQuery();
Considérations supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!