重載的方法SqlParameterCollection.Add(String, Object)已從.NET Framework的3.5 SP1版本開始被標記爲已棄用。您應該使用版本2.0中引入的AddWithValue()方法。爲什麼重載的Add被AddWithValue替換?
爲什麼Add(String,Object)被AddWithValue()替換是否有很好的理由?我對改變很滿意,但我很好奇爲什麼改變了。
重載的方法SqlParameterCollection.Add(String, Object)已從.NET Framework的3.5 SP1版本開始被標記爲已棄用。您應該使用版本2.0中引入的AddWithValue()方法。爲什麼重載的Add被AddWithValue替換?
爲什麼Add(String,Object)被AddWithValue()替換是否有很好的理由?我對改變很滿意,但我很好奇爲什麼改變了。
我認爲,這是因爲你引用的MSDN文檔描述了誤操作的可能性:當您使用此 超載 SqlParameterCollection.Add方法來 指定整數參數
要小心值。 由於這種重載採用 Object類型的值,則必須在 值爲零,如下面的C# 示例演示 積分值轉換爲一個對象類型。
parameters.Add("@pname", Convert.ToInt32(0));
如果不進行這種轉換, 編譯器假定你是 試圖調用 SqlParameterCollection.Add(字符串, SqlDbType)超載。
事實上,你的新API引用文檔說之多:
添加的,需要一個 串過載和對象,是因爲與 SqlParameterCollection可能歧義棄用 。添加過載 ,其中需要一個字符串和一個SqlDbType枚舉值 其中傳遞一個 整數字符串可能是 解釋爲 參數值或相應的 SqlDbType值。
我認爲這是由於價值被傳遞通過Object
,和其他超載Add()
由於含糊不清。我記得在有些情況下我無意中調用了不同版本的Add(),因爲我傳遞的值碰巧是不同的,更具體的數據類型。