我有一個方法,可以添加或更新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