1

我正在遍历数据表并将每一行打印到控制台,但我不断收到 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())
4

3 回答 3

2

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

于 2012-01-01T16:45:29.243 回答
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
于 2012-01-01T16:59:16.540 回答
1

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

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

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

于 2012-01-01T17:04:35.187 回答