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") に変更すると、1 つのエラーが削除される可能性があり、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 と DBNull.value の問題があるかどうかはわかりません。

于 2012-01-01T17:04:35.187 に答える