You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#调用SQL Server时为何不能用RiskIdList[x]作为SQL参数名?

参数不生效的核心原因

你遇到的问题是SQL参数名和C#代码中传入的参数名不匹配,SQL Server要求参数名必须和SQL语句中定义的占位符完全一致才能正常绑定:

  • 你在SQL语句里写的参数占位符是@RiskIdList[x],以@作为参数前缀,但C#代码创建SqlParameter时传入的参数名没有带@,数据库无法将传入的值和SQL里的占位符对应上
  • 方括号[]本身是SQL Server合法的参数名字符,不需要额外转义,只要两边参数名完全匹配即可正常识别

修复方案

直接修改C#代码中的参数名,和SQL占位符保持完全一致即可:

// 写法1:参数名完全匹配SQL中的占位符
command2.Parameters.Add(new SqlParameter("@RiskIdList[x]", RiskIdList[x]));

// 写法2:更推荐的写法,显式指定参数类型,避免隐式类型转换引发的索引失效、值转换错误等问题
// 示例为int类型,可根据你实际的RiskTypeID字段类型调整SqlDbType枚举值
command2.Parameters.Add("@RiskIdList[x]", SqlDbType.Int).Value = RiskIdList[x];

内容的提问来源于stack exchange,提问作者Sameera Athukorala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:06:04