Mattt
Mattt

Reputation: 1779

Looping SqlDataReader Seems to fail with only one row as a result

I have this code

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

As the title says, I get results fine as long as there are multiple rows returned, but it times out if the result is a single row. I'm sure I'm missing something silly, or doing it wrong. I'm a PHP developer being forced to write some .net so be gentle :)

Upvotes: 0

Views: 72

Answers (1)

Mahadev
Mahadev

Reputation: 856

Try This :

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

This is a slightly different approach to retrieve data from SqlDataReader and it works fine even if there's only one record in it.

Upvotes: 1

Related Questions