Maison > base de données > tutoriel mysql > Comment résoudre IndexOutOfBoundsException dans les requêtes paramétrées MySQL avec C# ?

Comment résoudre IndexOutOfBoundsException dans les requêtes paramétrées MySQL avec C# ?

DDD
Libérer: 2024-12-22 02:25:14
original
841 Les gens l'ont consulté

How to Resolve IndexOutOfBoundsException in MySQL Parameterized Queries with C#?

Requêtes paramétrées dans MySQL avec C# : traitement de l'exception IndexOutOfBoundsException

Lorsque vous travaillez avec des requêtes paramétrées dans MySQL en utilisant C#, il est important de vous assurer que les noms et valeurs des paramètres sont corrects pour éviter les exceptions. Dans ce cas, une IndexOutOfBoundsException est rencontrée lors de l'ajout du premier paramètre.

Pour résoudre ce problème, vérifiez que les noms des paramètres dans la chaîne de requête et les paramètres ajoutés à l'objet MySqlCommand correspondent. De plus, tenez compte des éléments suivants :

Noms de paramètres incompatibles

Dans le code fourni :

private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_@ = ?;";
Copier après la connexion

Vous avez utilisé par erreur ? des espaces réservés dans la chaîne de requête, qui ne sont pas pris en charge par MySQL. Au lieu de cela, MySQL attend des paramètres nommés, qui doivent commencer par @.

Modifications de code

Remplacez la chaîne de requête par ce qui suit :

private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;";
Copier après la connexion

En outre, utilisez la méthode AddWithValue pour ajouter des paramètres à l'objet de commande :

m.Parameters.AddWithValue("@param_val_1", val1);
m.Parameters.AddWithValue("@param_val_2", val2);
Copier après la connexion

Cela garantit que les noms des paramètres correspondent aux espaces réservés dans la requête string.

Valeur de retour

Dans le code modifié, la valeur du niveau est récupérée à l'aide de ExecuteScalar au lieu de ExecuteReader. En effet, la requête renvoie une valeur unique (niveau), donc l'utilisation de ExecuteScalar est plus efficace.

En apportant ces modifications, vous devriez pouvoir exécuter la requête paramétrée sans rencontrer d'exceptions.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal