如何使用IDataReader选择n行

时间:2011-10-27 09:26:13

标签: asp.net vb.net idatareader visual-web-developer-2010

[ASP .Net - Microsoft Visual Web Developer 2010]

大家好,

我对此代码有疑问:

With MenuNavCatDataSource
  Dim xReader As Data.IDataReader = .Select(DataSourceSelectArguments.Empty)

  If xReader.Read Then
    MenuNavCat1.Text = xReader.Item("MenuCategoryName")
    MenuNavCat2.Text = xReader.Item("MenuCategoryName")
    MenuNavCat3.Text = xReader.Item("MenuCategoryName")
    MenuNavCat4.Text = xReader.Item("MenuCategoryName")
    MenuNavCat5.Text = xReader.Item("MenuCategoryName")
  End If
End With

我有5个标签,我想从数据库中解析标签的内容。该数据库包含从1到5订购的菜单。我想在以下位置显示: - 'MenuNavCat1'标签,数据库中订单号为1的菜单, - 'MenuNavCat2'标签,数据库中订单号为2的菜单,等等......

如何在代码中添加where语句,就像'WHERE OrderNo = 1',等等..?

需要你的帮助..

非常感谢你。


修改

这是数据库:

表MenuNavCategory

 | Column Name  |  Data Type   | 
 |-----------------------------| 
 | MenuNavCatID |  int         | 
 | CategoryName |  varchar(20) |  
 | OrderNumber  |  int         |
 |-----------------------------|

表中插入了一些值。 我想在某个标签上显示'CategoryName'。 例如:

lblCat1 | lblCat2 | lblCat3 | lblCat4

然后,使用该xReader.Read,根据OrderNumber将数据库上的值存储到该标签上......

1 个答案:

答案 0 :(得分:0)

DataReader一次只读取一行数据。如果您有5个标签,那么您的数据库中应该有5行。然后使用DataReader迭代每一行并分配标签:

With MenuNavCatDataSource
 Dim xReader As Data.IDataReader = .Select(DataSourceSelectArguments.Empty)

 'i is just a counter to keep track of what row we are on.
 Dim i as integer = 1

 If xReader.Read Then
  Select Case i
   Case 1 'First Row from DB.
     MenuNavCat1.Text = xReader.Item("MenuCategoryName")
   Case 2 'Second Row from DB... etc.
    MenuNavCat2.Text = xReader.Item("MenuCategoryName")
   Case 3
    MenuNavCat3.Text = xReader.Item("MenuCategoryName")
   Case 4
    MenuNavCat4.Text = xReader.Item("MenuCategoryName")
   Case 5
    MenuNavCat5.Text = xReader.Item("MenuCategoryName")

   x+=1
 End If
End With

以上只是尝试解释DataReader如何工作的示例。我会找到另一种方法来实际编码它,因为上面依赖于数据库中的行按正确的顺序而且非常难看。