具有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中文網其他相關文章!