Maison > base de données > tutoriel mysql > Pourquoi ma requête paramétrée MySQL en C# lève-t-elle une exception IndexOutOfBoundsException ?

Pourquoi ma requête paramétrée MySQL en C# lève-t-elle une exception IndexOutOfBoundsException ?

Barbara Streisand
Libérer: 2024-12-25 17:06:17
original
924 Les gens l'ont consulté

Why Does My MySQL Parameterized Query in C# Throw an IndexOutOfBoundsException?

Requêtes paramétrées pour MySQL avec C#

Cette question répond à un problème courant rencontré lors de l'utilisation de requêtes paramétrées avec MySQL en C#. Le code fourni inclut les parties pertinentes du code qui soulèvent le problème.

Question :

L'extrait de code comprend une requête paramétrée avec deux points d'interrogation (?) comme espaces réservés pour les valeurs des paramètres. Cependant, l'utilisateur rencontre une exception IndexOutOfBoundsException lors de l'ajout du premier paramètre. Quel est le problème avec le code ?

Réponse :

Le code fourni initialise l'objet MySqlCommand avec une requête paramétrée, mais les points d'interrogation réservés ne sont pas préfixés par le "@ " caractère, qui est requis pour les paramètres nommés dans MySQL. Le code corrigé est le suivant :

private String readCommand = 
             "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;";

public bool read(string id)
{
    level = -1;
    MySqlCommand m = new MySqlCommand(readCommand);
    m.Parameters.AddWithValue("@param_val_1", val1);
    m.Parameters.AddWithValue("@param_val_2", val2);
    level = Convert.ToInt32(m.ExecuteScalar());
    return true;
}
Copier après la connexion

Dans ce code corrigé :

  • La chaîne readCommand est modifiée pour utiliser des paramètres nommés avec la syntaxe "@param_name".
  • La méthode AddWithValue est utilisée pour ajouter les paramètres à la commande, en garantissant que les noms des paramètres correspondent à ceux spécifiés dans la requête.
  • Le La méthode ExecuteScalar est utilisée pour exécuter la requête et récupérer une seule valeur scalaire (le niveau dans ce cas).

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