具有LIKE 和IN 條件的參數化查詢
.Net 中的參數化查詢通常涉及使用特定參數名稱並向這些參數新增值。但是,在處理 IN 或 LIKE 等可能需要多個或動態參數值的條件時,語法可能會變得更加複雜。
讓我們解決特定問題:
查詢:
SELECT * FROM Products WHERE Category_ID IN (@categoryids) OR name LIKE '%@name%'
參數:
修改的語法:
建立一個完全參數化的查詢,我們需要動態建構 IN 條件的參數名稱和值。我們可以透過使用循環來實現這一點:
int[] categoryIDs = ...; string Name = ...; SqlCommand comm = ...; 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}%");
修改的查詢文字:
將產生的參數名稱連接到IN 條件:
WHERE Category_ID IN (@p0, @p1, ...)
最終查詢文字如下所示:
SELECT * FROM Products WHERE Category_ID IN (@p0, @p1, ...) OR name LIKE @name
這種方法確保每個CategoryID 皆單獨參數化,且 LIKE 條件也使用適當的模式語法參數化。透過完全參數化查詢,您可以防止 SQL 注入並提高效能。
以上是如何在 .NET 查詢中參數化 LIKE 和 IN 條件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!