首页 >数据库 >mysql教程 >如何安全地使用 SQL 的 IN 语句以及 SqlParameter 和列表?

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

Susan Sarandon
Susan Sarandon原创
2024-12-20 03:39:12588浏览

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