C# 是否有一种不那么冗长和笨拙的方法来保证空SQL参数的安全?

C# 是否有一种不那么冗长和笨拙的方法来保证空SQL参数的安全?,c#,sql-server,varchar,C#,Sql Server,Varchar,我有代码可以将记录插入到SQL Server表中,在某些情况下,该表有一些空值(如果不先用伪空(空)VAL替换)。具体来说,他们是瓦查尔人 如果在这些实例中未检查null并分配string.empty: if (null == _PatternOrdinal) { rs.PatternOrdinal = string.Empty; } else { rs.PatternOrdinal = _PatternOrdinal; } …它引发异常,“参数化查询'(@Unit varch

我有代码可以将记录插入到SQL Server表中,在某些情况下,该表有一些空值(如果不先用伪空(空)VAL替换)。具体来说,他们是瓦查尔人

如果在这些实例中未检查null并分配string.empty:

if (null == _PatternOrdinal)
{
    rs.PatternOrdinal = string.Empty;
}
else
{
    rs.PatternOrdinal = _PatternOrdinal;
}
…它引发异常,“参数化查询'(@Unit varchar(25),@ReportID int,@NextExecution datetime,@NextEx'需要未提供的参数'@PatternOrdinal'

如果代码是这样的:

rs.PatternOrdinal = _PatternOrdinal;
…而不是上面的if块,它崩溃了

因此,我必须使用几个参数来实现这一点。有没有一种更简单的方法来避免这种周期性脱轨?

您可以使用:

如果操作数不为null,则返回左侧操作数;否则返回右侧操作数

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

在需要保存
null
值的情况下,应该使用
DbNull.Value
而不是空字符串

rs.PatternOrdinal = _PatternOrdinal ?? string.Empty;