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)
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) + ")";
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%'
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";
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!