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

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

Mary-Kate Olsen
發布: 2025-01-01 07:37:10
原創
453 人瀏覽過

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

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

.Net 中的參數化查詢通常涉及使用特定參數名稱並向這些參數新增值。但是,在處理 IN 或 LIKE 等可能需要多個或動態參數值的條件時,語法可能會變得更加複雜。

讓我們解決特定問題:

查詢:

SELECT * 
FROM Products 
WHERE Category_ID IN (@categoryids) 
OR name LIKE '%@name%'
登入後複製

參數:

  • 類別ID:以逗號分隔的數字列表,不含引號。
  • 名稱: 可能包含特殊字元的字串。

修改的語法:

建立一個完全參數化的查詢,我們需要動態建構 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板