首頁 >資料庫 >mysql教程 >如何在 .NET 中使用 LIKE 和 IN 條件參數化查詢?

如何在 .NET 中使用 LIKE 和 IN 條件參數化查詢?

Susan Sarandon
Susan Sarandon原創
2024-12-27 06:43:13839瀏覽

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

具有LIKE 和IN 條件的參數化查詢

在.NET 中使用參數化查詢時,範例通常會示範如何在簡單場景中使用它們,例如將單一列值與參數進行比較。然而,當處理像 IN 和 LIKE 這樣涉及多個參數或非標準字元的條件時,事情會變得更加複雜。

使用 IN 條件查詢

讓我們考慮一個根據類別 ID 搜尋產品的查詢,其中類別 ID 可以是逗號分隔的清單整數。

SELECT * 
FROM   Products 
WHERE  Category_ID IN (@categoryids) 

要使用整數數組 CategoryIDs 參數化此查詢,我們需要循環遍歷該數組並為每個類別 ID 建立一個參數。

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

查詢with LIKE 條件

現在讓我們新增一個 LIKE 條件來搜尋名稱中包含特定字串的產品,可能包含特殊字元。

SELECT * 
FROM   Products 
WHERE  Category_ID IN (@categoryids) 
   OR  name LIKE '%@name%'

要參數化此查詢,我們為名稱值建立一個參數,並使用串聯在查詢中搜尋名稱。

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";

透過使用透過這種方法,我們可以建立完全參數化的查詢,以不同的參數類型處理 IN 和 LIKE 條件,從而確保資料庫存取的安全性和效能。

以上是如何在 .NET 中使用 LIKE 和 IN 條件參數化查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn