Maison > base de données > tutoriel mysql > Pourquoi mon instruction préparée dans MySQL JDBC renvoie-t-elle une \'MySQLSyntaxErrorException\' ?

Pourquoi mon instruction préparée dans MySQL JDBC renvoie-t-elle une \'MySQLSyntaxErrorException\' ?

Barbara Streisand
Libérer: 2024-10-31 00:48:29
original
514 Les gens l'ont consulté

Why Does My Prepared Statement in MySQL JDBC Throw a

Instruction préparée MySQL : surmonter l'erreur "MySQLSyntaxErrorException"

Lors de l'utilisation d'instructions préparées dans JDBC pour MySQL, il est essentiel de garantir une syntaxe et une syntaxe appropriées. usage. Une erreur courante rencontrée par les développeurs est « MySQLSyntaxErrorException ». Explorons un cas spécifique de cette erreur et la solution correspondante.

Problème :

Une application Java utilisant le connecteur MySQL rencontre une « MySQLSyntaxErrorException » lors de l'exécution d'une déclaration préparée. Le code utilise l'instruction suivante pour la récupération des données :

<code class="java">PreparedStatement stmt = con.prepareStatement(selectSQL);
stmt.setInt(1, ad_id);
rs = stmt.executeQuery(selectSQL);</code>
Copier après la connexion

Lors de l'exécution, l'erreur est générée.

Message d'erreur :

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 '?' at line 1
Copier après la connexion

Solution :

L'erreur réside dans la syntaxe d'exécution de l'instruction préparée. Plus précisément, la ligne suivante est incorrecte :

<code class="java">rs = stmt.executeQuery(selectSQL);</code>
Copier après la connexion

La syntaxe correcte pour exécuter une instruction préparée est :

<code class="java">rs = stmt.executeQuery();</code>
Copier après la connexion

En omettant l'argument selectSQL de la méthodeexecuteQuery, l'instruction est exécutée correctement et l'erreur est résolue.

Explication :

Dans une instruction préparée, la requête SQL est transmise lors de la préparation de l'instruction et les paramètres sont définis séparément à l'aide du Méthodes setX (par exemple, setInt). La méthode executeQuery est utilisée pour récupérer le jeu de résultats, qui doit être appelé sans aucun argument. Le code d'origine incluait de manière incorrecte la chaîne de requête SQL dans l'appel de la méthodeexecuteQuery, provoquant l'erreur de syntaxe.

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