【问题标题】:VB Net IsDBNull issueVB Net IsDBNull 问题
【发布时间】:2014-12-11 18:45:23
【问题描述】:

我对 IsDBNull 方法有疑问。 这是我的代码:

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

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

不可能将 DBNull 转换为其他类型。

Convert.ToBoolean 失败

【问题讨论】:

标签: sql vb.net


【解决方案1】:

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

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

您需要使用 VB.Net 的 If 运算符,它会进行惰性求值。

【讨论】:

    【解决方案2】:
    If(IsDBNull(reader("field"))) then 
    return False
    
    else 
    
    Convert.ToBoolean(reader("field")))
    
    end if
    

    IIF 也会评估失败的部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多