Traduire une liste
Incluse dans la requête, une instruction "IN" spécifie qu'une colonne spécifique doit avoir une valeur correspondante dans une liste de valeurs fournie. Lorsque vous travaillez avec des instructions SQL IN utilisant un objet SqlCommand, une confusion peut survenir concernant la conversion d'un objet List
Dans l'extrait de code fourni :
cmd.CommandText = "Select dscr from system_settings where setting in @settings"; cmd.Connection = conn; cmd.Parameters.Add(new SqlParameter("@settings", settingsList)); reader = cmd.ExecuteReader();
Le paramètre settingsList représente une List
Pour exécuter en toute sécurité une requête IN avec SqlCommands, envisagez d'utiliser l'approche suivante :
string sql = "SELECT dscr FROM system_settings WHERE setting IN ({0})";
Dans cette déclaration, {0} sert d'espace réservé pour la liste de paramètres dynamiques générée à l'étape suivante.
string[] paramArray = settingList.Select((x, i) => "@settings" + i).ToArray();
Ici , le tableau de chaînes paramArray est dérivé en parcourant la settingsList et en attribuant chaque valeur à un paramètre nommé de la forme "@settings0", "@settings1", etc.
cmd.CommandText = string.Format(sql, string.Join(",", paramArray));
La méthode Format combine le modèle d'instruction avec la liste de paramètres , ce qui donne lieu à une instruction SQL paramétrée.
for (int i = 0; i < settingList.Count; ++i) { cmd.Parameters.Add(new SqlParameter("@settings" + i, settingList[i])); }
Des paramètres individuels sont ajoutés à l'objet SqlCommand à l'aide d'une boucle qui parcourt la settingsList pour garantir que chaque valeur a un paramètre correspondant.
Par en suivant ces étapes, vous pouvez effectuer efficacement une requête IN avec un objet SqlCommand à l'aide d'un objet List
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!