【问题标题】:properly dealing with null database values in vb.net正确处理 vb.net 中的空数据库值
【发布时间】:2012-01-31 10:08:21
【问题描述】:

我正在遍历数据表并将每一行打印到控制台,但我不断收到 dbnull 错误。我在循环中插入了一个 if 语句来尝试捕获它,但我似乎无法让它工作。有什么想法吗?

谢谢!

                Do While reader.Read
                For i As Integer = 0 To reader.FieldCount - 1

                    If reader.IsDBNull(i) Then
                        Console.Write(Nothing)
                    Else
                        Console.Write(reader.GetString(i))
                    End If

                Next
                Console.WriteLine(Environment.NewLine())

【问题讨论】:

  • 检查您是否真的收到 DBNull 错误并发布。

标签: database vb.net datatable isnull


【解决方案1】:

将 Console.Write(Nothing) 更改为 Console.Write("Nothing") 可能会删除一个错误,并且 reader.GetString(i) 可能会引发 InvalidCastException 错误 - 您应该抓住这一点。然而,reader.IsDBNull(i) 看起来是正确的。

【讨论】:

  • 是的,它不喜欢写(什么都没有)。我最后只是把 " , " 作为字符串,现在可以正常工作了。
【解决方案2】:

我从未使用过阅读器方法,但 Console.Write(Nothing) 可能会出现问题。试试这个:

        Do While reader.Read
        For i As Integer = 0 To reader.FieldCount - 1

            If reader.Item(i) Is DBNull.Value Then
                Console.Write("")
            Else
                Console.Write(CStr(reader.Item(i)))
            End If

        Next
        Console.WriteLine(Environment.NewLine())
    Loop

【讨论】:

    【解决方案3】:

    为什么不简单地把它改成

            If NOT isdbnull(reader.Item(i)) Then
                Console.Write("")
            Else
                Console.Write(CStr(reader.Item(i)))
            End If
    

    这对我来说总是更好。我不知道这里是否存在 DBNull vs DBNull.value 问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 2016-08-23
      • 1970-01-01
      • 2015-02-14
      • 1970-01-01
      相关资源
      最近更新 更多