在我的數據層階級,我初始化參數,像這樣:cmd.Parameters.AddWithValue可空INT
private int? _DependencyID;
public int? DependencyID
{ get {return _DependencyID;} set {_DependencyID = value;} }
public ConstructorMethod()
{
_DependencyID = (int?)null;
}
在類insert()方法,我試圖
cmd.AddWithValue("@DependencyID", _DependencyID);
如果_DependencyID有一個價值,一切都很好。 如果_DependencyID是空的,我得到錯誤:
The parameterized query '(@param1(nvarchar(10), @param2(nvarchar(255), expects the parameter '@DependecyID", which was not supplied
我發現這個[文章] [1],所以我試圖調整,像這樣的代碼:
cmd.AddWithValue("@DependencyID", _DependencyID == null? DBNull.Value : _DependencyID);
and
cmd.AddWithValue("@DependencyID", _DependencyID == null? (int?) DBNull.Value : _DependencyID);
無論哪種方式,有問題。我該如何處理?
在此先感謝您的幫助
只是所以我明白,是因爲DBNull.Value是一個對象,它將_DependencyID投射到一個對象使得這項工作?所以cmd負責拳擊和拆箱? – Bengal
順便說一句,謝謝大家的快速回復.... SLak的答案剛剛跳出來,我比其他人更快地理解它。謝謝大家 – Bengal
@孟加拉語:不,你只需要投射就可以告訴編譯器表達式是什麼類型。 – SLaks