3 回答
TA贡献1862条经验 获得超7个赞
基本上:没有。
除非您禁用了 ANSI NULL 语法(请不要这样做),否则您需要不同的 SQL来测试NULL. 一个常见的技巧(易于编写,但效率不高)是作弊:
WHERE (FirstName = @FirstName OR (@FirstName IS NULL AND FirstName IS NULL))
AND (LastName = @LastName OR (@LastName IS NULL AND LastName IS NULL))
-- etc x5
(或您想要为空值执行的任何测试) - 并使用类似的东西:
database.sqlCommand.Parameters.AddWithValue("@FirstName", txbFirstName.Text.DBNullIfEmpty());
database.sqlCommand.Parameters.AddWithValue("@LastName", txbLastName.Text.DBNullIfEmpty());
// etc x5
在哪里DBNullIfEmpty看起来像:
internal static class MyExtensionMethods
{
public static object DBNullIfEmpty(this string value)
{
if(string.IsNullOrWhiteSpace(value)) return DBNull.Value;
return value;
}
}
TA贡献1871条经验 获得超8个赞
您可以为 AddWithValue() 创建一个扩展方法,并在实际值为 NULL 时传递一个额外的第三个参数作为您想要的值
public static class SqlParameterCollectionExtensions {
public static SqlParameter AddWithValue(this SqlParameterCollection target, string parameterName, object value, object nullValue) {
if (value == null) {
return target.AddWithValue(parameterName, nullValue);
}
return target.AddWithValue(parameterName, value);
}
}
后来这样称呼它
database.sqlCommand.Parameters.AddWithValue("@City", txbCity.Text, "IS NULL");
TA贡献1775条经验 获得超11个赞
SQL Server 数据库中的值对应的参数NULL
值是DBNull.Value
。
Parameters.Add(“@NAME”, SqlDbType.<type>).Value = argument == null ? DBNull.Value : argument;
- 3 回答
- 0 关注
- 91 浏览
添加回答
举报