首頁 >資料庫 >mysql教程 >如何安全地使用 SQL 的 IN 語句以及 SqlParameter 和列表?

如何安全地使用 SQL 的 IN 語句以及 SqlParameter 和列表?

Susan Sarandon
Susan Sarandon原創
2024-12-20 03:39:12642瀏覽

How to Safely Use SQL's IN Statement with SqlParameter and a List?

使用SqlParameter 和List 的SQL IN 語句

嘗試使用List 執行帶有SqlParameter 的IN 語句時,由於無法將清單對應到已知的提供者類型,可能會出現ArgumentException。這個問題可以用以下方法解決:

  1. 將列表轉換為陣列:
    將列表轉換為陣列。字串數組,例如:

    string[] paramArray = settingList.ToArray();
  2. 格式化 SQL 語句:
    使用每個參數的佔位符格式化 SQL語句,使用中的參數數量數組:

    string sql = "SELECT dscr FROM system_settings WHERE setting IN ({0})";
    sql = string.Format(sql, string.Join(",", paramArray.Select((x, i) => "@settings" + i)));
  3. 新增參數:
    對於數組中的每個元素,使用適當的名稱和值將SqlParameter加到指令物件:

    for (int i = 0; i < settingList.Count; ++i)
    {
        cmd.Parameters.Add(new SqlParameter("@settings" + i, settingList[i]));
    }
  4. 執行指令:
    照常執行指令:

    reader = cmd.ExecuteReader();
照常執行指令:

此方法提供了一種安全有效的方法來執行帶有List 的IN 語句。使用 SQLParameters。

以上是如何安全地使用 SQL 的 IN 語句以及 SqlParameter 和列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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