翻译列表
包含在查询中的“IN”语句指定特定列必须在提供的值列表中具有匹配的值。当使用 SqlCommand 对象处理 SQL IN 语句时,可能会出现关于 List
在提供的代码片段中:
cmd.CommandText = "Select dscr from system_settings where setting in @settings"; cmd.Connection = conn; cmd.Parameters.Add(new SqlParameter("@settings", settingsList)); reader = cmd.ExecuteReader();
参数settingsList代表一个List
要使用 SqlCommands 安全地执行 IN 查询,请考虑采用以下方法:
string sql = "SELECT dscr FROM system_settings WHERE setting IN ({0})";
在此语句中,{0} 作为下一步生成的动态参数列表的占位符。
string[] paramArray = settingList.Select((x, i) => "@settings" + i).ToArray();
这里,字符串数组 paramArray 是通过迭代 settingsList 并将每个值分配给以下形式的命名参数而派生的"@settings0", "@settings1" 等
cmd.CommandText = string.Format(sql, string.Join(",", paramArray));
Format 方法组合语句带有参数列表的模板,生成参数化 SQL
for (int i = 0; i < settingList.Count; ++i) { cmd.Parameters.Add(new SqlParameter("@settings" + i, settingList[i])); }
使用循环遍历 settingsList 以确保将各个参数添加到 SqlCommand 对象中每个值都有对应的参数。
通过以下步骤,您可以有效地执行 IN 查询与使用 List
以上是如何安全地使用列表作为 SQL IN 语句的 Sql 参数?的详细内容。更多信息请关注PHP中文网其他相关文章!