Maison > Java > javaDidacticiel > Pourquoi est-ce que j'obtiens « java.sql.SQLException : index de paramètre hors plage (1 > nombre de paramètres, soit 0) » dans mon code Java ?

Pourquoi est-ce que j'obtiens « java.sql.SQLException : index de paramètre hors plage (1 > nombre de paramètres, soit 0) » dans mon code Java ?

Mary-Kate Olsen
Libérer: 2024-12-16 04:38:13
original
131 Les gens l'ont consulté

Why Am I Getting nombre de paramètres, qui est 0)" dans My Java Code ? " /> nombre de paramètres, qui est 0)" dans Mon code Java ? " />

Dépannage "java.sql.SQLException : indice de paramètre hors plage (1 > nombre de paramètres, qui est 0)"

Dans le domaine de la programmation Java, l'erreur "java.sql.SQLException: Parameter index out of range (1 > number of settings, qui est 0)" se produit lors de la tentative pour exécuter une requête SQL en utilisant PreparedStatement sans fournir d'espaces réservés correspondants dans la chaîne de requête.

Cette erreur se produit spécifiquement lors de l'appel des méthodes setXxx() sur PreparedStatement, garantissant une liaison de données appropriée. Cependant, si la requête SQL n'en contient aucune. espaces réservés, l'erreur sera déclenchée.

Cause :

La cause première de l'erreur est la absence d'espaces réservés (?) dans la requête SQL. PreparedStatement s'appuie sur ces espaces réservés pour permettre l'insertion de paramètres de manière dynamique.

Solution :

Pour résoudre ce problème, vous devez modifier votre requête SQL pour inclure des espaces réservés pour chaque paramètre que vous souhaitez définir à l'aide des méthodes setXxx(). Par exemple, si vous avez une chaîne de requête. comme :

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";
Copier après la connexion

Vous devrez le modifier comme suit :

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";
Copier après la connexion

Il est important de noter que l'index du paramètre commence par 1. Par conséquent, vous n'avez pas besoin de citer les espaces réservés comme suit :

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES ('?', '?', '?')";
Copier après la connexion

Cela entraînera la même erreur car l'analyseur SQL traite les espaces réservés entre guillemets comme des valeurs de chaîne réelles d'espaces réservés pour la liaison des paramètres.

Considérations supplémentaires :

Pour plus d'informations, il est recommandé de se référer aux ressources suivantes :

  • [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!

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