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

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

Susan Sarandon
發布: 2024-12-20 03:39:12
原創
563 人瀏覽過

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

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