Maison > base de données > tutoriel mysql > Comment éviter IndexOutOfBoundsException lors de l'utilisation de requêtes paramétrées avec MySQL en C# ?

Comment éviter IndexOutOfBoundsException lors de l'utilisation de requêtes paramétrées avec MySQL en C# ?

Susan Sarandon
Libérer: 2024-12-15 09:29:09
original
843 Les gens l'ont consulté

How to Avoid IndexOutOfBoundsException When Using Parameterized Queries with MySQL in C#?

Requête paramétrée pour MySQL avec C#

Lorsque vous travaillez avec des requêtes SQL, les requêtes paramétrées sont fortement recommandées. Ils protègent contre les attaques par injection SQL et améliorent les performances en éliminant le besoin de concaténer des valeurs de chaîne.

Cependant, lorsque vous utilisez des requêtes paramétrées avec MySQL à partir de C#, il est important de vous assurer que votre code est correctement configuré. Une erreur potentielle qui peut survenir est une IndexOutOfBoundsException lors de l'ajout du premier paramètre.

Le problème :

Dans le code donné :

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

Le problème réside dans la chaîne de requête, qui utilise un point d'interrogation (?) comme espace réservé pour les paramètres. MySQL ne reconnaît pas les points d'interrogation comme espaces réservés aux paramètres ; il attend des paramètres nommés préfixés par « @ ».

La solution :

Pour résoudre le problème, vous devez modifier la chaîne de requête pour utiliser les paramètres nommés et ajouter le paramètres à l'objet MySqlCommand à l'aide de la méthode AddWithValue() :

private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;";
Copier après la connexion
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

En utilisant les paramètres nommés et le AddWithValue(), la requête sera exécutée avec succès sans rencontrer d'IndexOutOfBoundsException.

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