建议使用哪种方法:
void Add(int? value)
{
command.Parameters.Add("@foo").Value = value;
}
或
void Add(int? value)
{
command.Parameters.Add("@foo").Value = (object)value ?? DBNull.Value;
}
答案 0 :(得分:4)
如果要在参数中传递空值,则需要像第二个示例中那样传递DBNull.Value
。
如果将null
指定为参数值,则不会将参数发送到过程,这将使过程调用失败(如果需要参数)或使用参数的默认值,可能是也可能不是。
答案 1 :(得分:1)
这取决于您想要的功能。
如果您传递null
作为值,那么SqlCommand将视为完全没有传递参数的情况。如果它是例如存储过程中的必需参数,则会导致查询失败。
如果你传递DBNull.Value
,那么SqlCommand会将其视为传递的SQL null。