Maison > base de données > tutoriel mysql > Comment paramétrer les conditions LIKE et IN dans les requêtes SQL .NET ?

Comment paramétrer les conditions LIKE et IN dans les requêtes SQL .NET ?

Susan Sarandon
Libérer: 2024-12-31 09:53:09
original
156 Les gens l'ont consulté

How to Parameterize LIKE and IN Conditions in .NET SQL Queries?

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

Dans le monde de la programmation .NET, les requêtes paramétrées sont généralement simples à configurer. Cependant, des difficultés surviennent lorsqu'il s'agit de conditions complexes impliquant plusieurs valeurs.

Considérez la requête suivante qui inclut à la fois une condition IN et une condition LIKE :

SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID IN (@categoryids) 
      OR  name LIKE '%@name%'
", 
   conn);
comm.Parameters.Add("@categoryids", SqlDbType.Int);
comm.Parameters["@categoryids"].Value = CategoryIDs;
comm.Parameters.Add("@name", SqlDbType.Int);
comm.Parameters["@name"].Value = Name;
Copier après la connexion

Dans ce cas, CategoryIDs est un liste de nombres séparés par des virgules et Nom est une chaîne pouvant contenir des caractères spéciaux. Le défi réside dans le paramétrage correct de ces valeurs.

Solution

Pour résoudre ce problème, nous construisons une séquence de noms de paramètres @p0 à @pN-1, où N est le nombre d'ID de catégorie dans le tableau. Nous créons ensuite des paramètres pour chaque nom et attribuons l'ID de catégorie correspondant comme valeur.

Pour la condition LIKE, nous utilisons la concaténation de chaînes pour créer une expression de recherche floue contenant @name.

Voici un exemple pour illustrer le processus :

string Name = "someone";
int[] categoryIDs = new int[] { ... };

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 requête entièrement paramétrée garantit sécurité et flexibilité dans la gestion de conditions complexes. Bien que l'exemple utilise des tableaux, la technique est applicable à toute collection de valeurs.

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