Maison >Java >javaDidacticiel >Pourquoi est-ce que j'obtiens « java.sql.SQLException : index des paramètres hors plage » dans mon PreparedStatement ?

Pourquoi est-ce que j'obtiens « java.sql.SQLException : index des paramètres hors plage » dans mon PreparedStatement ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-18 12:12:15561parcourir

Why Do I Get

SQLException : index des paramètres hors plage

Lors de l'exécution d'une requête SQL paramétrée, vous pouvez rencontrer l'erreur "java.sql.SQLException : Indice de paramètre hors plage." Ce problème provient d'une incompatibilité entre le nombre de paramètres spécifiés dans la requête et le nombre de paramètres réels transmis à PreparedStatement.

Cause :

Cette erreur se produit lorsque vous essayez pour définir une valeur de paramètre à l'aide de la méthode setXxx() sur PreparedStatement, mais la requête SQL ne contient pas d'espace réservé correspondant (?) pour cela paramètre.

Solution :

Pour résoudre ce problème, assurez-vous que la requête SQL contient le nombre correct d'espaces réservés. L'index du paramètre commence par 1 et chaque espace réservé (?) désigne un paramètre spécifique qui doit être défini à l'aide de la méthode setXxx().

Par exemple :

// Assuming "val1", "val2", and "val3" are valid values
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);

Éviter Citation des espaces réservés :

Il est important de noter que vous ne devez pas citer les espaces réservés dans la requête SQL. Si vous les citez, l'analyseur SQL les interprétera comme des valeurs de chaîne réelles, ce qui empêchera la liaison des paramètres.

Ressources supplémentaires :

  • [Tutoriel JDBC - préparé déclarations](https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.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