可以为Nullable类型的DBNull.Value是否为SqlCommandParameter.Value

时间:2010-02-27 11:48:21

标签: .net ado.net nullable dbnull

建议使用哪种方法:

void Add(int? value)
{
   command.Parameters.Add("@foo").Value = value;
}

void Add(int? value)
{
   command.Parameters.Add("@foo").Value = (object)value ?? DBNull.Value;
}

2 个答案:

答案 0 :(得分:4)

如果要在参数中传递空值,则需要像第二个示例中那样传递DBNull.Value

如果将null指定为参数值,则不会将参数发送到过程,这将使过程调用失败(如果需要参数)或使用参数的默认值,可能是也可能不是。

答案 1 :(得分:1)

这取决于您想要的功能。

如果您传递null作为值,那么SqlCommand将视为完全没有传递参数的情况。如果它是例如存储过程中的必需参数,则会导致查询失败。

如果你传递DBNull.Value,那么SqlCommand会将其视为传递的SQL null。