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

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

Susan Sarandon
Libérer: 2024-12-27 06:43:13
original
838 Les gens l'ont consulté

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

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

Lors de l'utilisation de requêtes paramétrées dans .NET, les exemples démontrent généralement leur utilisation avec des scénarios simples, comme comparer une valeur de colonne unique à un paramètre. Cependant, les choses peuvent devenir plus complexes lorsqu'il s'agit de conditions telles que IN et LIKE qui impliquent plusieurs paramètres ou des caractères non standard.

Requête avec la condition IN

Considérons un requête qui recherche des produits en fonction de l'ID de catégorie, où l'ID de catégorie peut être une liste d'entiers séparés par des virgules.

SELECT * 
FROM   Products 
WHERE  Category_ID IN (@categoryids) 
Copier après la connexion

Pour paramétrez cette requête à l'aide d'un tableau d'entiers CategoryIDs, nous devons parcourir le tableau et créer un paramètre pour chaque ID de catégorie.

int[] categoryIDs = new int[] { 238, 1138, 1615, 1616, 1617 };

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.CommandText = "SELECT * FROM Products WHERE Category_ID IN (";
comm.CommandText += string.Join(",", parameters) + ")";
Copier après la connexion

Requête avec condition LIKE

Ajoutons maintenant une condition LIKE qui recherche les produits dont les noms contiennent une chaîne spécifique, éventuellement avec des caractères spéciaux.

SELECT * 
FROM   Products 
WHERE  Category_ID IN (@categoryids) 
   OR  name LIKE '%@name%'
Copier après la connexion

Pour paramétrer cela requête, nous créons un paramètre pour la valeur Name et utilisons la concaténation pour rechercher le nom dans la requête.

string Name = "someone";

SqlCommand comm = conn.CreateCommand();

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

En utilisant cette approche, nous pouvons créer des requêtes entièrement paramétrées qui gèrent à la fois les conditions IN et LIKE avec différents types de paramètres, garantissant la sécurité et les performances de l'accès à notre base de données.

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