Maison >Java >javaDidacticiel >Erreur de syntaxe MySQL PreparedStatement : pourquoi `executeQuery()` échoue-t-il avec les espaces réservés `?` ?
Erreur de syntaxe MySQL : compréhension de la syntaxe PreparedStatement
Votre code Java utilisant un PreparedStatement pour exécuter une requête rencontre une erreur de syntaxe MySQL (erreur numéro 1064). Cette erreur est généralement générée lorsqu'il y a un problème avec la syntaxe SQL elle-même.
Identification de la source de l'erreur :
Le code fourni montre que vous essayez de exécuter une requête contenant des espaces réservés représentés par "?". MySQL n'interprète pas le "?" caractères comme espaces réservés et les traite à la place comme faisant partie de l'instruction SQL.
Solution : Utilisation de la méthode executeQuery() sans argument
Pour résoudre le problème, vous devez utiliser la méthode executeQuery() de l'instruction préparée sans spécifier la chaîne de requête comme argument.
PreparedStatement s = conn.prepareStatement(query); s.setInt(1, 2); s.setString(2, "zen"); ResultSet rs = s.executeQuery(); // Correct syntax
En omettant la chaîne de requête dans executeQuery(), vous autorisez l'instruction préparée à exécuter la requête précédemment définie avec les valeurs de paramètres fournies.
Attention : fuite de ressources
Votre code manque actuellement gestion de l’allocation et de la désallocation des ressources. Il est recommandé d'utiliser l'idiome JDBC consistant à fermer toutes les ressources acquises (Connection, Statement, ResultSet) dans un bloc final du bloc try. Sinon, votre application risque d'épuiser les ressources de la base de données au fil du temps, entraînant une instabilité.
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!