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
Susan Sarandonoriginal
2024-12-11 15:43:11429parcourir

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

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();
}

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