我想知道哪种用法是正确的?
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()));发布于 2013-11-20 17:38:51
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。
发布于 2013-11-20 17:33:06
这一条:如果你要写入的字段可以接受数据库中的NULL值,那么cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));是正确的。
如果字段是VARCHAR,并且不接受NULL,但是您希望以某种方式指示该字段中没有值,因此在应用程序中写入特定于应用程序的“无值”值,则为cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value.ToString()));。因此,您的应用程序知道,如果它在字段中找到该值,这意味着:没有值。
发布于 2013-11-20 17:33:58
DBNull.Value.ToString()将返回空字符串,所以我认为
cmd.Parameters.Add(new SqlParameter("@ParentSesID", DBNull.Value));是一种很好的方法,这里唯一的方法
请看这里:
http://ideone.com/iGo1Jh
https://stackoverflow.com/questions/20092060
复制相似问题