处理SQLParameter中可能为null的datetime值

时间:2017-04-14 12:58:44

标签: .net datetime sqlparameter

我正在尝试做我认为非常简单的事情,但我遇到了问题。我在.NET应用程序中有代码,使用SQLCommand将新记录插入表中。

我传递的可能是日期时间值,也可能是null。下面的代码似乎不起作用:

command.Parameters.AddWithValue("@SettleDate", 
IIf(String.IsNullOrEmpty(SettleDate), Nothing, DateTime.Parse(SettleDate)))

在哪里" SettleDate"是一个包含可以为null的日期的字符串。我认为这段代码将涵盖不尝试解析空值的条件,但是当它运行时我得到以下错误,它看起来是来自Datetime.Parse方法:

String reference not set to an instance of a String.
Parameter name: s

怎么会这样?如果" SettleDate"为null然后它永远不会到达解析方法。

1 个答案:

答案 0 :(得分:0)

你应该使用VB.NET的短路操作符和DbNull.Value

If(String.IsNullOrEmpty(SettleDate), DBNull.Value, DateTime.Parse(SettleDate)))

The IF operator,与IIF函数相反,如果第一个函数为真,则不会尝试计算表达式的两边。另请注意,要将空值传递给SqlParameter,请使用DbNull.Value