VB Net IsDBNull问题

时间:2014-12-11 10:40:41

标签: sql vb.net

我有一个IsDBNull方法的问题。 这是我的代码:

   Dim a as Bool=  IIf(IsDBNull(reader("field")), _
                       False, _
                       Convert.ToBoolean(reader("field")))

如果列为false,则上面的代码应该返回 False ,但是我得到了异常:

  

无法将DBNull转换为其他类型。

Convert.ToBoolean失败

2 个答案:

答案 0 :(得分:2)

Iif的所有参数在被调用时都会被评估,无论它们是否会被使用。

在这方面它与<#>不等同于<#em>到C#的条件运算符(它只计算布尔控制子表达式和其他两个子表达式之一)。

您需要使用VB.Net的If运算符进行延迟评估。

答案 1 :(得分:1)

If(IsDBNull(reader("field"))) then 
return False

else 

Convert.ToBoolean(reader("field")))

end if

IIF也将评估失败的部分。