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; }
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; }
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!