SqlParameter的默认值设置为0,不能按预期工作 [英] SqlParameter with default value set to 0 doesn't work as expected
问题描述
我在做这样的事情:
的SqlParameter参数=新的SqlParameter(@参数,0){SqlDbType = SqlDbType.Int};
私人无效TestParam(参数的SqlParameter){
字符串测试= param.Value.ToString(); //在这里获得的NullReferenceException
}
不过,我停止获取例外,当我把它像这样的:
的SqlParameter参数=新的SqlParameter(@参数,SqlDbType.Int){值= 0};
私人无效TestParam(参数的SqlParameter){
字符串测试= param.Value.ToString(); //一切OK
}
谁能告诉我,为什么SqlParameter的假定0是一样的空
编辑: MSDN介绍该在这里:的 SqlParameter的构造
当您使用的SqlParameter构造函数
的这种超负荷
指定整数参数值,一定要小心。
,因为这个重载采用
Object类型的值,必须将
积分值转换为对象类型时,
值为零,因为下面的C#
。例子演示参数=新的SqlParameter(@ PNAME,Convert.ToInt32(0));
如果您不执行此转换,
编译器假定你是
试图调用的SqlParameter
(字符串,SqlDbType)构造
超载。
块引用>
感谢的Msdn :)
I was doing something like this:
SqlParameter param = new SqlParameter("@Param", 0) { SqlDbType = SqlDbType.Int }; private void TestParam(SqlParameter param) { string test = param.Value.ToString(); // Getting NullReferenceException here }
But I stop getting the exception when I put it like this:
SqlParameter param = new SqlParameter("@Param", SqlDbType.Int) { Value = 0 }; private void TestParam(SqlParameter param) { string test = param.Value.ToString(); // Everything OK }
Can anyone tell me why SqlParameter assumes 0 is the same as null?
Edit: MSDN Explains this here: SqlParameter Constructor
解决方案Use caution when you use this overload of the SqlParameter constructor to specify integer parameter values. Because this overload takes a value of type Object, you must convert the integral value to an Object type when the value is zero, as the following C# example demonstrates.
Parameter = new SqlParameter("@pname", Convert.ToInt32(0));
If you do not perform this conversion, the compiler assumes that you are trying to call the SqlParameter (string, SqlDbType) constructor overload.
Thanks Msdn :)
这篇关于SqlParameter的默认值设置为0,不能按预期工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!