我想了解哪种用法是正确的?
if(!string.IsNullOrEmpty(parentID))
cmd.Parameters.Add(new SqlParameter("@ParentSesID", parentID));
else
cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));
OR
if(!string.IsNullOrEmpty(parentID))
cmd.Parameters.Add(new SqlParameter("@ParentSesID", parentID));
else
cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value.ToString()));
答案 0 :(得分:5)
cmd.Parameters.Add(new SqlParameter("@ParentSesID", parentID));
这是将parentID传递给参数@ParentSesID。
cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));
将null
值传递给参数。
cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value.ToString()));
传递等于string.Empty
,这在数值数据类型中是不允许的。
cmd.Parameters.Add(new SqlParameter("@ParentSesID", null);
与忽略参数相同。
因此,当您需要将null
传递给SP时,您必须通过DBNull.Value
。
答案 1 :(得分:2)
这一个:cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));
是正确的,如果您要写入的字段可以接受数据库中的NULL
值。
这一个:cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value.ToString()));
如果该字段是a,例如VARCHAR
,并且不接受NULL
,但您想以某种方式表明该字段中缺少值,所以你在你的应用程序特定的“无值”值内写。因此,您的应用程序知道,如果它在字段中找到该值,则表示:没有值。
答案 2 :(得分:1)
DBNull.Value.ToString()
将返回空字符串,所以我想
cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));
是一种很好的方法,这是唯一的方法
见这里: