Maison > Java > javaDidacticiel > Pourquoi est-ce que j'obtiens une « erreur de syntaxe MySQL proche de « ? » avec PreparedStatement en Java ?

Pourquoi est-ce que j'obtiens une « erreur de syntaxe MySQL proche de « ? » avec PreparedStatement en Java ?

Susan Sarandon
Libérer: 2024-12-11 15:43:11
original
340 Les gens l'ont consulté

Why Am I Getting a

Erreur de syntaxe MySQL : "Vous avez une erreur dans votre syntaxe SQL" lors de l'exécution de PreparedStatement

Lors de l'exécution d'une requête à l'aide d'un PreparedStatement, les utilisateurs peut rencontrer une erreur "MySQLSyntaxErrorException proche de "?"". Cette erreur signifie une erreur de syntaxe dans la requête SQL.

Dans ce problème spécifique, le code tente de remplacer les paramètres de requête à l'aide du '?`占位符, mais PreparedStatement ne remplace pas correctement ces espaces réservés.

Le problème réside dans l’appel à la méthodeexecuteQuery(). Le code écrase la requête préparée par la requête d'origine en appelant s.executeQuery(query) au lieu de s.executeQuery(). La méthode executeQuery() sans argument doit être utilisée pour exécuter la requête préparée.

PreparedStatement s = conn.prepareStatement(query);
s.setInt(1, intValue);
s.setString(2, strValue);        
rs = s.executeQuery(); // Correct
Copier après la connexion

De plus, le code peut perdre des ressources en raison de connexions, d'instructions et d'ensembles de résultats non fermés. Les ressources doivent être fermées dans un bloc final pour éviter l'épuisement des ressources.

try {
  ...
} finally {
  if (rs != null) rs.close();
  if (s != null) s.close();
  if (conn != null) conn.close();
}
Copier après la connexion

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!

source:php.cn
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