Maison > base de données > tutoriel mysql > MySQL PreparedStatement : Pourquoi `executeQuery()` échoue-t-il avec une erreur de syntaxe ?

MySQL PreparedStatement : Pourquoi `executeQuery()` échoue-t-il avec une erreur de syntaxe ?

Susan Sarandon
Libérer: 2025-01-11 15:26:41
original
242 Les gens l'ont consulté

MySQL PreparedStatement: Why is `executeQuery()` Failing with a Syntax Error?

Instruction préparée MySQL : résolution des executeQuery() erreurs de syntaxe

Un problème courant lors de l'utilisation de PreparedStatement de Java avec MySQL implique des erreurs SQLException indiquant des problèmes de syntaxe SQL à proximité de l'espace réservé (?). Cela résulte souvent d'une mauvaise exécution de l'instruction.

Le problème :

Le code Java employant PreparedStatement peut générer une exception similaire à :

<code>... 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 '?'</code>
Copier après la connexion

L'approche incorrecte :

L'erreur se produit généralement lors de la tentative d'exécution du PreparedStatement en utilisant executeQuery() avec un argument de chaîne (par exemple, la requête SQL elle-même) :

statement.executeQuery(searchPerson); // Incorrect
Copier après la connexion

Ceci traite searchPerson comme une chaîne SQL littérale, en ignorant les espaces réservés définis dans PreparedStatement.

La bonne solution :

La clé est d'exécuter le PreparedStatement sans aucun paramètre transmis à executeQuery() :

statement.executeQuery(); // Correct
Copier après la connexion

Les paramètres sont déjà liés au PreparedStatement en utilisant setString(), setInt(), etc., avant l'appel executeQuery(). Fournir à nouveau la chaîne de requête comme argument remplace cette liaison et entraîne une erreur de syntaxe. executeQuery() exécute simplement l'instruction avec les paramètres pré-liés.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal