2012-01-01 2 views
1

私はデータテーブルをループして、各行をコンソールに出力していますが、私はdbnullエラーを受け取ります。ループにif文を挿入して試してみましたが、動作させることができません。何か案は?vb.netのヌルデータベース値を適切に扱います

ありがとうございます!

   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

実際にDBNullエラーが発生していないか確認して投稿してください。 – Olaf

答えて

2

Console.Write( "何もない")にConsole.Write(Nothing)を変更すると、1つのエラーを取り除くかもしれない、とreader.GetString(i)は、InvalidCastExceptionがエラーをスローする可能性があります - あなたはこれをキャッチする必要があります。しかし、ISDBNull(i)は正しく見えます。

+0

ええ、それは書き込み(何も)が好きではありませんでした。私はちょうど "、"を文字列として入れてしまい、今は正常に動作します。 –

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 
1

なぜ単にいつも私のために、より良い仕事をしている

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

に変更していません。 DBNullとDBNull.valueの問題があるかどうかはわかりません。

関連する問題