我有一个方法,可以添加或更新DB(SQL Server)中的记录,并且它将RecordID作为(Int32)输出参数,并将成功/失败结果作为(Int32)返回值返回。为什么我必须为SQL查询转换返回参数值?
鉴于我指定了这些参数的类型,为什么我们必须在返回时施放它们?
我希望用下面的:
enquiryID = cmd.Parameters["@EnquiryID"].Value;
...但我最多有通过对额外的箍跳:
enquiryID = Int32.Parse(cmd.Parameters["@EnquiryID"].Value.ToString());
这不是世界末日,但它看起来像是一个长期的解决方案。为什么Parameters.Value返回一个SqlParameters.Value对象而不是Int32?
UPDATE:
OK,我相信 - 直接铸造FTW:(int)cmd.Parameters["@EnquiryID"].Value
这可能最终成为最好一堆if语句 'int值= value.Equals(DBNull.Value )? null:(int)value'而不是null你可以把一个默认值作为 – 2010-06-30 12:00:12
Re:sql server正在执行cast - 是的,这是有道理的。仅供参考,价值永远不会为空,但问题(和你的例子)值得注意。谢谢 – CJM 2010-06-30 12:03:15
@Chris T:我总是忘记了?操作员,因为我很少使用它,谢谢! – 2010-06-30 12:19:54