Maison > base de données > tutoriel mysql > Comment exécuter en toute sécurité des requêtes paramétrées dans MySQL en utilisant C# ?

Comment exécuter en toute sécurité des requêtes paramétrées dans MySQL en utilisant C# ?

DDD
Libérer: 2024-12-14 02:26:11
original
471 Les gens l'ont consulté

How to Securely Execute Parameterized Queries in MySQL using C#?

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

Les requêtes paramétrées sont une partie importante de la programmation de bases de données. Ils vous permettent de séparer l'instruction SQL des données utilisées dans la requête. Cela permet d'éviter les attaques par injection SQL et peut rendre votre code plus lisible et maintenable.

Pour utiliser une requête paramétrée en C#, vous devez créer un objet MySqlCommand et y ajouter des paramètres. Vous pouvez le faire en utilisant la propriété Parameters de l'objet MySqlCommand.

Le code suivant montre un exemple d'utilisation d'une requête paramétrée pour sélectionner des données dans la table USERS :

private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_2 = ?;";

public bool read(string id)
{
    level = -1;
    MySqlCommand m = new MySqlCommand(readCommand);
    m.Parameters.Add(new MySqlParameter("", val1));
    m.Parameters.Add(new MySqlParameter("", val2));
    MySqlDataReader r = m.ExecuteReader();
    if (r.HasRows)
        level = Convert.ToInt32(r.GetValue(0).ToString());
    r.Close();
    return true;
}
Copier après la connexion

Ceci le code sera compilé et exécuté sans erreur. Cependant, il ne renverra pas les résultats escomptés. Le problème est que les noms des paramètres dans l'instruction SQL ne correspondent pas aux noms des paramètres dans l'objet MySqlCommand.

Pour résoudre ce problème, vous devez modifier les noms des paramètres dans l'instruction SQL pour qu'ils correspondent aux noms des paramètres dans l'objet MySqlCommand. Vous pouvez le faire en utilisant le caractère @ suivi du nom du paramètre.

Le code suivant montre comment résoudre le problème :

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

Ce code sera compilé et exécuté sans erreur. Il renverra également les résultats attendus.

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