2016-10-31 20 views
1

我試圖在VB.net數據爲空。此方法或屬性不能被稱爲對空值 - if語句沒有奏效

SQL = "SELECT SUM(amount) FROM billing_payments WHERE invoice_sequence = '" & reader.GetString(0) & "';" 
      myCommand2.Connection = conn2 
      myCommand2.CommandText = SQL 
      reader2 = myCommand2.ExecuteReader 
      If reader2.Read Then 
       If Not IsDBNull(reader2.GetString(0)) Then 
        account_balance = (account_balance - reader2.GetString(0)) 
       End If 
      End If 
      reader2.Close() 

如果有數據返回,但在沒有工作正常運行這段代碼數據,我收到一條錯誤消息:

數據爲空。此方法或屬性不能在空值上調用

我已經嘗試在IF語句中添加以檢查數據是否爲NULL,但沒有奏效。

我是否在錯誤地添加了該內容?

+0

問題是null在不同的上下文中意味着什麼。 IsDBNull()用於檢查一個字段是否爲空。 I.E.如果返回一行,但該行的特定列爲空。但爲了.net檢查,必須首先返回一行。如果你的sql根本沒有返回任何行,那麼沒有什麼可以.Read,因此IsDBNull函數沒有字段來檢查它是否爲空 – soohoonigan

+0

是的,我明白你的意思了。那麼我能做些什麼呢? – charlie

+0

就個人而言,我通常用「如果myReader不是Nothing並且還有myReader.Read()然後」開啓這些類型的塊「 – soohoonigan

回答

1
If reader2 <> Nothing Then 
    If reader2.Read Then 
     If Not reader2.IsDBNull(0) Then 
     '... 
     End If 
    End If 
End If 
0

檢查沒有工作,像這樣嗎?

If reader2.GetString(0) IsNot Nothing Then 
    account_balance = (account_balance - reader2.GetString(0)) 
End If 
相關問題