无法从超过1行读取数据

时间:2013-03-04 03:53:28

标签: asp.net

我在从表中读取数据时遇到问题。这是我编码的样本

Dim SqlQry As String = "SELECT Distinct(RechargeAmt) from KioskItem where TelcoID='" & TelcoID & "'"
        Dim SqlCmd As New SqlCommand(SqlQry, Conn)
        Dim dr As SqlDataReader = SqlCmd.ExecuteReader
        dr.Read()
        If dr.HasRows Then
            While dr.Read()
                Dim SqlQry As String = "SELECT Distinct(RechargeAmt) from KioskItem where TelcoID='" & TelcoID & "'"
        Dim SqlCmd As New SqlCommand(SqlQry, Conn)
        Dim dr As SqlDataReader = SqlCmd.ExecuteReader
        dr.Read()
        If dr.HasRows Then
            While dr.Read()
                RechargeAmt = dr(0)
                a = a & RechargeAmt & ";"
            End While
        End If
        If a = 0 Then
            Return RechargeAmt
        Else
            Return a
        End If           

我的问题是,如果数据有多行,将数据保存到字符串中没有问题,但是当表中的数据只有一行时,它无法读取数据。我试试这个

If dr.HasRows Then
            RechargeAmt = dr(0)
            While dr.Read()
                a = a & RechargeAmt & ";"
            End While
        End If
        If a = 0 Then
            Return RechargeAmt
        Else
            Return a
        End If      

但仍然无法从表中读取数据

1 个答案:

答案 0 :(得分:1)

那是因为你总是错过第一行。

见这里

 dr.Read()               //Gets the first row
    If dr.HasRows Then
        While dr.Read()  //Gets the second row onwards

你总是跳过第一行。

不需要初始读取。你可以直接用

开始
 While dr.Read()

仅当存在行时,控制才会进入循环。