2013-04-23 117 views
0

空值我有一個數據庫,其中列有沒有值(所以它的null),但我不能在vb.net處理這個問題。我試着用這個代碼:vb.net - 讀取數據庫

  reader.Read() 
      If String.IsNullOrEmpty(reader.GetString(0)) Then 
       Return 
      Else 
       tilbulfolderTextBox.Text = reader.GetString(0) 
      End If 

,並與:

If reader.Read() = False Then 

,並用:

If IsDBNull(reader.Read()) Then 

但很顯然,這是行不通的,因爲我得到後的聲明異常Else,我不能讓這種方法Null值。 我猜你會找出我從程序需要通過閱讀代碼本身。

回答

3

定義了DbDataReader基礎對象的IsDBNull方法來處理這種情況。
當然你不能嘗試讀取的東西,如果reader.Read()以虛假的(意味着沒有更多的行可用)

If reader.Read() Then 
     If reader.IsDBNull(0) Then 
      Return 
     Else 
      tilbulfolderTextBox.Text = reader.GetString(0) 
     End If 
    End If 

另外,我沒有看到更多的代碼的回報,但請記住,如果不關閉連接並處理涉及此操作的對象,則以這種方式返回可能會非常錯誤

而且,正如其他人指出的那樣,還有一個函數稱爲IsDBNull,它來自Microsoft.VisualBasic程序集,但是,我更願意使用由.NET核心框架中定義的類提供的方法,而不是爲了與以前版本的VB

2

.Net有不同類型的處理SQL空值:DbNull

檢查這篇文章對如何處理它:handling dbnull data in vb.net

在你的情況,你需要的IsDbNull功能,檢查這個MSDN Documentation一下。

If IsDbNull(data) Then 
    return 
Else 
    tilbulfolderTextBox.Text = data 
End If 
2

使用IsDBNull函數確保DataReader中的值爲空或不是。然後繼續執行代碼流程。

2

聽起來像是你的IF可能無法正常工作

使用IsDBNull以便代替嘗試。

IsDBNull以便是布爾變量,並且可以象下面使用;

reader.Read() 

If Not IsDbNull(reader.GetString(0)) Then 
    tilbulfolderTextBox.Text = reader.GetString(0) 
Else 
    return 
End If 
3

您應該使用IsDbNull功能與null到comapre它:

 reader.Read() 
     If IsDbNull(reader(0)) OrElse String.IsNullOrEmpty(reader.GetString(0)) Then 
      Return 
     Else 
      tilbulfolderTextBox.Text = reader.GetString(0) 
     End If 
2

試試這個

reader.Read() 
     If IsDbNull(reader.GetString(0)) Then 
      Return 
     Else 
      tilbulfolderTextBox.Text = reader.GetString(0) 
     End If