我正在尝试做我认为非常简单的事情,但我遇到了问题。我在.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然后它永远不会到达解析方法。
答案 0 :(得分:0)
你应该使用VB.NET的短路操作符和DbNull.Value
If(String.IsNullOrEmpty(SettleDate), DBNull.Value, DateTime.Parse(SettleDate)))
The IF operator,与IIF函数相反,如果第一个函数为真,则不会尝试计算表达式的两边。另请注意,要将空值传递给SqlParameter,请使用DbNull.Value。