2011-03-18 127 views
22

我在做這樣的事情不工作任何人都可以告訴我爲什麼SqlParameter假定0與null相同?SqlParameter的默認值設置爲0,預期

編輯: MSDN解釋了這個在這裏:當您使用的SqlParameter構造函數的這個重載 到 SqlParameter Constructor

+4

好吧,這裏解釋:http://msdn.microsoft.com/en-us/library/0881fz2y%28v=VS.80%29.aspx當創建一個默認值爲「0」的新的SqlParameter時,你需要明確地將其轉換爲整數。否則,它假定您傳遞一個SqlDbType枚舉作爲第二個參數。 – Meryovi 2011-03-18 19:25:09

回答

38

要小心指定整數參數值。 因爲此過載的值爲 類型的對象,所以當 的值爲零時,必須將 整數值轉換爲對象類型,如以下C# 示例所示。

Parameter = new SqlParameter("@pname", Convert.ToInt32(0)); 

如果不進行這種轉換, 編譯器假定你是 試圖調用的SqlParameter (字符串,SqlDbType)構造 超載。

感謝Msdn :)

5

你傳入0是,而不是價值。允許使用0個字面值(和常數值)任意枚舉類型 - 表示底層枚舉類型的0,並且比對象更好的「匹配」,因爲它不需要裝箱。

就個人而言,我會用;

Value = 0 

也許在對象初始值設定項中。