SqlParameter設定value為0卻變成null

今天遇到一個不知道是不是bug的問題.
就是當我使用下面語法去產生一個SqlParameter時,

new SqlParameter("@test",0)

程式一直出錯說要設定參數.
看了一下上面所產生的東西,
value竟然是null,
但是如果改為

new SqlParameter("@test",1)

value又變成是正常的1
看來似乎是不讓我直接設0
後來只好改用

new SqlParameter("@test", Convert.ToInt32(0))

這樣就可以正常傳入0了...


posted on 2008/4/1 20:22 | 我要推薦 | 閱讀數 : 818 | 分類[ 小舖轉檔 ] 訂閱

Comments on this post

# re: SqlParameter設定value為0卻變成null

是呀,我也遇到了这样的问题,郁闷,不知道微软的那帮人是怎么想的。
Left by 新建文件夹 on 十一月 06, 2009 4:59 下午
回覆

# re: SqlParameter設定value為0卻變成null

Hi,
MSDN這邊有提到

SqlParameter 建構函式 (String, Object) 

您在 value 參數中指定 Object 時,會從 Object 的 Microsoft .NET Framework 型別推斷 SqlDbType

使用這個 SqlParameter 建構函式的多載指定整數參數值時,請特別小心。由於這個多載接受 Object 型別的 value,因此您必須在值為零時將整數值轉換成Object 型別,如下面的 C# 範例所示。

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

如果您沒有執行這個轉換,編譯器會假設您正在嘗試呼叫 SqlParameter (string, SqlDbType) 建構函式多載。

Left by larrynung on 十一月 06, 2009 5:35 下午
回覆

回應:

Please add 7 and 4 and type the answer here: