Maison >base de données >tutoriel mysql >PreparedStatement `executeQuery()` : pourquoi l'utiliser sans paramètre de chaîne SQL ?

PreparedStatement `executeQuery()` : pourquoi l'utiliser sans paramètre de chaîne SQL ?

DDD
DDDoriginal
2024-11-20 13:14:15475parcourir

PreparedStatement `executeQuery()`: Why Use It Without a SQL String Parameter?

Erreur de syntaxe de PreparedStatement : une plongée plus approfondie

Vous avez rencontré un message d'erreur lié à PreparedStatements. L'examen de votre code, en particulier de la requête selectSql1 et de la méthode select1, révèle un problème subtil.

Le problème réside dans l'utilisation de la méthodeexecuteQuery de PreparedStatement. Votre méthode select1 tente actuellement d'appeler :

return this.stmt.executeQuery(sql);

où sql est la requête SQL elle-même. Ce n'est pas la bonne façon d'utiliser une méthodeexecuteQuery sur un PreparedStatement.

Solution

Le correctif consiste simplement à mettre à jour cette ligne vers :

return this.stmt.executeQuery();

En supprimant le paramètre sql de la méthodeexecuteQuery, vous vous assurez que la requête interne du PreparedStatement est exécutée à la place de la chaîne SQL brute. PreparedStatements fournit des paramètres d'espace réservé désignés par des points d'interrogation (?) dans la requête SQL, qui sont ensuite liés à des valeurs spécifiques telles que randNum.

Par conséquent, l'appel d'exécution correct dans ce contexte est sans aucun paramètre, permettant à PreparedStatement de exécuter sa requête interne, qui a déjà été liée aux valeurs des paramètres.

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