我已经有了将记录插入SQL Server表的代码,在某些情况下它有一些空值(如果没有首先用伪空(空)val替换)。具体来说,它们是varchars。
如果我没有检查null并在这些实例中分配string.empty:
if (null == _PatternOrdinal)
{
rs.PatternOrdinal = string.Empty;
}
else
{
rs.PatternOrdinal = _PatternOrdinal;
}
...它抛出异常,“参数化查询'(@ Unit varchar(25),@ ReportID int,@ NextExecution datetime,@ NextEx'需要参数'@PatternOrdinal',这是未提供的“
IOW,如果代码只是这样:
rs.PatternOrdinal = _PatternOrdinal;
...而不是上面的if块,它会崩溃。
所以我必须用几个参数做到这一点。是否有一种不那么冗长的方法来规避这种周期性的脱轨?
答案 0 :(得分:5)
您可以使用null-coalescing operator:
rs.PatternOrdinal = _PatternOrdinal ?? string.Empty;
如果操作数不为空,则返回左侧操作数;否则它会返回右手操作数。
但请注意,空字符串和null
值不同。空字符串仍然是值,但null
表示没有定义的值。
如果您需要保存null
值,则应使用DbNull.Value
而不是空字符串。