使用Visual Studio 2010我正在整理一个需要记录一些数据的快速.NET应用程序。我正在使用SQL Server Express的内置工具,并为数据插入创建了存储过程。我已经设置了数据库表以允许相关字段上的Null,但是生成运行时异常“过程或函数'XYZ'需要参数'@ErrorCode',这是未提供的。”
我尝试过“普通方式”创建SqlParameters:
command.Parameters.Add(new SqlParameter("ErrorCode", state.ErrorCode));
我还尝试通过设置更多属性来创建它们:
SqlParameter errorCodeParam = new SqlParameter("ErrorCode", SqlDbType.Int);
errorCodeParam.IsNullable = true;
errorCodeParam.Value = state.ErrorCode;
command.Parameters.Add( errorCodeParam );
状态对象上的我的ErrorCode属性只是一个可以为空的int ....“int?”赋值为“null”。由于这个字段的表格列可能允许空值,我有点难以理解它为什么抱怨。
思想或想法?感谢。
答案 0 :(得分:1)
经过一些额外的实验后,我找到了答案(我认为如果其他人遇到同样的情况我会把它传递出来)。我一直在使用如下语句:
command.Parameters.Add(new SqlParameter("ErrorCode", (state.ErrorCode != null ? state.ErrorCode : null)));
我正在检查可空int(int?)的值以查看是否有值,如果没有,则将C#null分配给SqlParameter .... 需要DBNull.Value而不是< / em>的