Maison > base de données > tutoriel mysql > Pourquoi mon code Java génère-t-il une exception SQL « Index des paramètres hors plage » ?

Pourquoi mon code Java génère-t-il une exception SQL « Index des paramètres hors plage » ?

Mary-Kate Olsen
Libérer: 2024-12-27 00:48:17
original
696 Les gens l'ont consulté

Why Does My Java Code Throw a

Index des paramètres hors plage dans l'exception SQL : causes et solution

Rencontre de l'exception "java.sql.SQLException : index des paramètres hors de range (1 > nombre de paramètres, soit 0)" lors de l'insertion dans la base de données peut être frustrant. Cette erreur se produit lorsque vous essayez de définir une valeur de paramètre dans une instruction préparée alors que la requête SQL ne dispose pas des espaces réservés correspondants (?) pour ces paramètres.

Cause de l'erreur :

Cette erreur se produit lorsque vous tentez d'utiliser la méthode setXxx() sur PreparedStatement, mais que la chaîne de requête SQL ne dispose pas des espaces réservés nécessaires pour le paramètre spécifié. index.

Exemple de code incorrect :

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";

preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1); // This will fail.
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);
Copier après la connexion

Solution :

Pour résoudre ce problème, vous devez modifiez la chaîne de requête SQL pour inclure des espaces réservés (?) Pour tous les paramètres que vous souhaitez set.

Exemple de code corrigé :

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";

preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1);
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);
Copier après la connexion

Remarque :

  • Les indices des paramètres commencent à 1 .
  • Vous devez éviter d'utiliser des guillemets simples ou doubles autour des espaces réservés. Cela amènera l'analyseur SQL à les interpréter comme des valeurs de chaîne, conduisant à la même exception.

Informations supplémentaires :

  • [Tutoriel JDBC - Préparé Déclarations](https://docs.oracle.com/javase/7/docs/technotes/guides/jdbc/index.html#prepared)

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