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
DDDoriginal
2024-12-22 02:25:14778parcourir

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_@ = ?;";

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;";

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);

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!

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