曾經逐水草而居的程式員
今天遇到一個不知道是不是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 | 我要推薦 | 閱讀數 : 977 | 分類[ 小舖轉檔 ] 訂閱
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) 建構函式多載。
您在 value 參數中指定 Object 時,會從 Object 的 Microsoft .NET Framework 型別推斷 SqlDbType。
使用這個 SqlParameter 建構函式的多載指定整數參數值時,請特別小心。由於這個多載接受 Object 型別的 value,因此您必須在值為零時將整數值轉換成Object 型別,如下面的 C# 範例所示。
Parameter = new SqlParameter("@pname", Convert.ToInt32(0));
如果您沒有執行這個轉換,編譯器會假設您正在嘗試呼叫 SqlParameter (string, SqlDbType) 建構函式多載。
Copyright © 孤影