2012-01-01 71 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 2012-01-01 16:45:36

回答

2

更改Console.Write(沒有)到Console.Write( 「無」)可能會刪除一個錯誤,並且reader.GetString(I)可能會拋出InvalidCastException的錯誤 - 你應該抓住這個。 reader.IsDBNull(i),但是,看起來是正確的。

+0

是的,它不喜歡寫(沒有)。我最後只是把「,」當作字符串,現在它工作的很好。 – 2012-01-01 17:03:43

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 vs DBNull.value問題。