Maison > base de données > tutoriel mysql > Comment utiliser efficacement les requêtes paramétrées avec les conditions LIKE et IN dans .NET ?

Comment utiliser efficacement les requêtes paramétrées avec les conditions LIKE et IN dans .NET ?

Patricia Arquette
Libérer: 2024-12-29 05:38:17
original
160 Les gens l'ont consulté

How to Effectively Use Parameterized Queries with LIKE and IN Conditions in .NET?

Requêtes paramétrées avec des conditions LIKE et IN

L'utilisation de requêtes paramétrées dans .Net suit généralement un modèle spécifique, comme démontré dans l'exemple :

SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID = @categoryid
", 
   conn);
comm.Parameters.Add("@categoryid", SqlDbType.Int);
comm.Parameters["@categoryid"].Value = CategoryID;
Copier après la connexion

Cependant, effectuer des requêtes plus complexes avec des conditions telles que IN et LIKE peut s'avérer difficile.

Mise en œuvre Conditions IN et LIKE

Considérons le cas où vous disposez d'une liste d'ID de catégorie stockés sous forme de chaîne séparée par des virgules et d'un nom de produit contenant potentiellement des caractères spéciaux. Pour construire une requête paramétrée pour ce scénario :

  1. Décomposez la condition IN : Convertissez la chaîne d'ID de catégorie séparée par des virgules en un tableau d'entiers.

    int[] categoryIDs = Array.ConvertAll(CategoryIDs.Split(','), int.Parse);
    Copier après la connexion
  2. Générer des noms de paramètres : Créer une séquence de noms de paramètres, par exemple @p0, @p1, @p2, etc.

    string[] parameters = new string[categoryIDs.Length];
    for (int i = 0; i < categoryIDs.Length; i++)
    {
       parameters[i] = "@p" + i;
    }
    Copier après la connexion
  3. Ajouter des paramètres à la commande : Ajoutez chaque paramètre à la commande avec l'ID de catégorie correspondant comme valeur.

    for (int i = 0; i < categoryIDs.Length; i++)
    {
       comm.Parameters.AddWithValue(parameters[i], categoryIDs[i]);
    }
    Copier après la connexion
  4. Construisez le Condition IN : Joignez les noms des paramètres dans une chaîne séparée par des virgules dans la clause IN de la requête.

    WHERE Category_ID IN (" + string.Join(",", parameters) + ")
    Copier après la connexion
  5. Gérez la condition LIKE : Paramétrez la condition LIKE en utilisant un caractère générique et la chaîne d'entrée.

    OR name LIKE @name
    Copier après la connexion

    où @name est un paramètre ajouté au commande avec la chaîne d'entrée comme valeur.

En mettant le tout ensemble, la requête paramétrée devient :

string Name = "someone";
int[] categoryIDs = new int[] { 238, 1138, 1615, 1616, 1617, 1618, 1619, 1620, 1951, 1952 };

SqlCommand comm = conn.CreateCommand();

string[] parameters = new string[categoryIDs.Length];
for(int i=0;i<categoryIDs.Length;i++)
{
   parameters[i] = "@p"+i;
   comm.Parameters.AddWithValue(parameters[i], categoryIDs[i]);
}
comm.Parameters.AddWithValue("@name",$"%{Name}%");
comm.CommandText = "SELECT * FROM Products WHERE Category_ID IN (";
comm.CommandText += string.Join(",", parameters) + ")";
comm.CommandText += " OR name LIKE @name";
Copier après la connexion

Cette approche crée une requête entièrement paramétrée qui adresse à la fois Conditions IN et LIKE avec paramétrage approprié.

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