3

推荐哪种方法:

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

或者

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

2 回答 2

4

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

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

于 2010-02-27T11:59:01.743 回答
1

这取决于您想要的功能。

如果你null作为值传递,那么 SqlCommand 将把它当作参数根本没有传递。如果它是例如存储过程中的必需参数,那么这将导致您的查询失败。

如果您通过DBNull.Value了,那么 SqlCommand 会将其视为正在传递的 SQL 空值。

于 2010-02-27T12:05:45.757 回答