Maison >Java >javaDidacticiel >Pourquoi `executeQuery(String)` provoque-t-il des erreurs de syntaxe SQL avec PreparedStatements ?

Pourquoi `executeQuery(String)` provoque-t-il des erreurs de syntaxe SQL avec PreparedStatements ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-06 11:24:16530parcourir

Why Does `executeQuery(String)` Cause SQL Syntax Errors with PreparedStatements?

Invocation de méthode incorrecte provoquant une erreur de syntaxe lors de l'exécution de PreparedStatement

Lors de l'exécution d'une requête SQL à l'aide d'un PreparedStatement, il est important de respecter la syntaxe et la méthode d'exécution correctes pour éviter erreurs de syntaxe.

Un problème courant survient lors de la tentative d'exécution de la requête en appelant executeQuery(String) sur le Objet PreparedStatement. Ceci est incorrect, car cela remplace la requête préparée par la requête d'origine.

L'approche correcte consiste à appeler la méthode executeQuery() sans aucun argument, comme démontré ci-dessous :

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

Par en effectuant cet ajustement, vous vous assurez que la requête préparée est exécutée correctement, en éliminant l'erreur "Vous avez une erreur dans votre syntaxe SQL".

Supplémentaire Remarques :

  • Il est crucial d'assurer une bonne gestion des ressources en fermant les objets Connection, Statement et ResultSet dans un bloc try-with-resources pour éviter les fuites de ressources.
  • Le message d'erreur spécifique à votre cas : "Vous avez une erreur dans votre syntaxe SQL ; consultez le manuel qui correspond à la version de votre serveur MySQL pour connaître la bonne syntaxe à utiliser près de '? ou MemberName = ?' à la ligne 1", indique que MySQL a rencontré un élément de syntaxe non reconnu "?" dans la requête préparée, soulignant la nécessité d'une liaison de paramètres correcte.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn