使用DataReader将数据加载到标签中,不确定查询结果中的总行数

时间:2012-07-20 13:22:05

标签: asp.net vb.net sqldatareader

如果您不知道查询结果可能包含多少行,您将如何编写代码以从查询中读取数据并在单独的标签中显示每一行?如果您尝试使用DataReader读取太多行,则在尝试读取不存在的行上的列数据时会抛出异常。我不知道如何编码。

If dr.HasRows Then
    dr.Read()
    LN2.Text = dr.Item("linenum").ToString
Else
    LN2.visible  = False         
End If

此示例显示了我如何使用DataReader加载第二行。如果有两行数据,则此方法有效,但如果只有一行数据,则会引发异常。我最多有12行数据但是,但我的实际查询结果可能包含1到12行数据。

1 个答案:

答案 0 :(得分:1)

Read方法返回一个布尔值,指示下一行的读取是否成功。因此,您可以将代码更改为以下内容:

If dr.Read() Then
    LN2.Text = dr.Item("linenum").ToString
Else
    LN2.visible  = False         
End If

然而,通常情况下,在这种情况下,在固定数量的标签中显示不同数量的数据行并不是最好的方法。例如,如果您使用单个ListBox控件,则所有加载代码都可以简化为以下内容:

While dr.Read()
    ListBox1.Items.Add(dr.Item("linenum").ToString())
End While

如果您需要为每一行显示多列数据,我建议使用ListView控件(View属性设置为Details)或{{1控制。