是否有一个不那么冗长和kludgy的方法来使其他无效的SQL参数安全?

时间:2016-05-02 21:16:57

标签: c# sql-server varchar

我已经有了将记录插入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块,它会崩溃。

所以我必须用几个参数做到这一点。是否有一种不那么冗长的方法来规避这种周期性的脱轨?

1 个答案:

答案 0 :(得分:5)

您可以使用null-coalescing operator

rs.PatternOrdinal = _PatternOrdinal ?? string.Empty;

如果操作数不为空,则返回左侧操作数;否则它会返回右手操作数。

但请注意,空字符串和null值不同。空字符串仍然是值,但null表示没有定义的值。

如果您需要保存null值,则应使用DbNull.Value而不是空字符串。