2015-05-22 72 views
0

我有這樣的代碼環流式SqlDataReader對象似乎失敗,只有一行結果

If (sqlDataRdr.HasRows) Then 

    Do While sqlDataRdr.Read() 
    outstring = outstring & Trim(sqlDataRdr.Item("a_bill_number").ToString()) & "|" & Trim(sqlDataRdr.Item("ad_old_amount").ToString()) & "|" & Trim(sqlDataRdr.Item("c_cid_name1").ToString()) & "|" & Trim(sqlDataRdr.Item("bs_prev_read_date").ToString()) & "|" & Trim(sqlDataRdr.Item("bs_read_date").ToString()) & "*" 
    Loop 

Else 
    outstring = "No records found for the entered criteria. Please try again." 
End If 

正如標題所說,我得到的,只要結果罰款,有多個行返回的,而是超時如果結果是單行。我確信我錯過了一些愚蠢的東西,或者做錯了。我是一個PHP開發人員被迫寫一些.NET所以,請溫柔:)

+0

此代碼似乎沒有錯。也許問題在此之前。什麼是您收到的確切錯誤信息? – Steve

+0

我真的看不到任何明顯的錯誤。也許嘗試使用'Do While(sqlDataRdr.Read())'而不是?抓住吸管,我知道 – kaybee99

+0

您是否在Do語句中設置了斷點來檢查datareader對象?如果沒有,那將是調試這第一步... –

回答

1

試試這個:

If (sqlDataRdr.HasRows) Then 

While sqlDataRdr.Read() 
    outstring = outstring & Trim(sqlDataRdr.GetValue(sqlDataRdr.GetOrdinal("a_bill_number"))) & "|" & Trim(sqlDataRdr.GetValue(sqlDataRdr.GetOrdinal("ad_old_amount"))) & "|" & Trim(sqlDataRdr.GetValue(sqlDataRdr.GetOrdinal("c_cid_name1"))) & "|" & Trim(sqlDataRdr.GetValue(sqlDataRdr.GetOrdinal("bs_prev_read_date"))) & "|" & Trim(sqlDataRdr.GetValue(sqlDataRdr.GetOrdinal("bs_read_date"))) & "*" 
end While 

Else 
    outstring = "No records found for the entered criteria. Please try again." 
End If 

這是一個稍微不同的方法來從SqlDataReader檢索數據和它的作品,即使有很好只有一條記錄。

+0

您確定這是有效的代碼嗎?我使用它,我得到一個錯誤,說:「循環必須在匹配'Do'之前」。另外,'sqlDataRdr.GetValue'返回類型'Object'。'Option Strict On'不能連接字符串和Object。 –