Maison >base de données >tutoriel mysql >Comment utiliser en toute sécurité l'instruction IN de SQL avec SqlParameter et une liste ?

Comment utiliser en toute sécurité l'instruction IN de SQL avec SqlParameter et une liste ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-20 03:39:12563parcourir

How to Safely Use SQL's IN Statement with SqlParameter and a List?

Instruction SQL IN avec SqlParameter et List

Lors de la tentative d'exécution d'une instruction IN avec un SqlParameter à l'aide d'une List , une ArgumentException peut survenir en raison de l'incapacité de mapper la liste à un type de fournisseur connu. Ce problème peut être résolu en utilisant l'approche suivante :

  1. Convertir la liste en tableau :
    Convertir la liste à un tableau de chaînes, tel que :

    string[] paramArray = settingList.ToArray();
  2. Formater l'instruction SQL :
    Formater l'instruction SQL avec un espace réservé pour chaque paramètre, en utilisant le nombre de paramètres dans le tableau :

    string sql = "SELECT dscr FROM system_settings WHERE setting IN ({0})";
    sql = string.Format(sql, string.Join(",", paramArray.Select((x, i) => "@settings" + i)));
  3. Ajouter Paramètres :
    Pour chaque élément du tableau, ajoutez un SqlParameter à l'objet de commande, en utilisant le nom et la valeur appropriés :

    for (int i = 0; i < settingList.Count; ++i)
    {
        cmd.Parameters.Add(new SqlParameter("@settings" + i, settingList[i]));
    }
  4. Exécutez le Commande :
    Exécutez la commande comme habituel :

    reader = cmd.ExecuteReader();

Cette approche fournit un moyen sûr et efficace d'exécuter une instruction IN avec une instruction List en utilisant SQLParameters.

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!

Déclaration:
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