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