正确处理vb.net中的空数据库值

时间:2012-01-01 16:28:37

标签: database vb.net datatable isnull

我正在循环一个数据表,并将每一行打印到控制台,我继续得到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())

3 个答案:

答案 0 :(得分:2)

将Console.Write(Nothing)更改为Console.Write(“Nothing”)可能会删除一个错误,而reader.GetString(i)可能会抛出InvalidCastException错误 - 您应该抓住它。然而,reader.IsDBNull(i)看起来是正确的。

答案 1 :(得分:1)

我从未使用过阅读器方法,但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

答案 2 :(得分:1)

为什么不简单地将其更改为

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

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