Maison >base de données >tutoriel mysql >Pourquoi est-ce que j'obtiens « java.sql.SQLException : index de paramètre hors plage » ?

Pourquoi est-ce que j'obtiens « java.sql.SQLException : index de paramètre hors plage » ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-24 00:24:20952parcourir

Why Am I Getting

java.sql.SQLException : index de paramètre hors plage (1 > nombre de paramètres, qui est 0)

Cette erreur se produit lorsque vous essayez de définir un paramètre dans une instruction préparée qui n'a pas d'espace réservé correspondant dans le SQL requête.

Causes :

  • La requête SQL n'inclut pas suffisamment d'espaces réservés (?) pour le nombre de paramètres définis dans l'instruction.
  • Vous utilisez par erreur des instructions paramétrées avec des instructions non paramétrées requêtes.

Solution :

Pour résoudre cette erreur, assurez-vous que la requête SQL contient le nombre correct d'espaces réservés pour les paramètres en cours de définition. Par exemple :

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1);
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);

Remarques supplémentaires :

  • Les index des paramètres commencent à 1, alors assurez-vous de les définir dans le bon ordre.
  • Ne citez pas les espaces réservés dans la requête SQL, car cela les traiterait comme une chaîne valeurs.
  • Si vous utilisez une requête non paramétrée, vous devez définir les paramètres directement dans la chaîne de requête :
String sql = String.format("INSERT INTO tablename (col1, col2, col3) VALUES (%s, %s, %s)", val1, val2, val3);

Références :

  • Tutoriel JDBC - Déclarations préparées : https://docs.oracle.com/javase/tutorial/jdbc/preparedstatements.html

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