DbNull.Value和DbNull.Value.ToString()之间的区别
我想知道哪种用法是正确的?
if(!string.IsNullOrEmpty(parentID)) cmd.Parameters.Add(new SqlParameter("@ParentSesID", parentID)); else cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));
要么
if(!string.IsNullOrEmpty(parentID)) cmd.Parameters.Add(new SqlParameter("@ParentSesID", parentID)); else cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value.ToString()));
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
。
这一个: cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));
是正确的,如果您要写入的字段可以接受数据库中的NULL
值。
这一个: cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value.ToString()));
如果该字段是,例如, VARCHAR
,并且不接受NULL
,但是您希望以某种方式指示该字段中缺少值,那么您在应用程序内部写入特定的 “无值”值。 因此,您的应用程序知道,如果它在字段中找到该值,则表示:没有值。
DBNull.Value.ToString()
将返回空字符串,所以我想
cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));
是一个很好的方法,这是唯一的方法
看这里: