2011-10-27 31 views
0

選擇n行[ASP.NET的 - 微軟的Visual Web Developer 2010]如何使用的IDataReader

大家好,

我有問題,此代碼:

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的菜單等on ...

如何將where語句添加到代碼中,就像'WHERE OrderNo = 1'一樣,等等......?

需要您的幫助傢伙..

太謝謝你了。


編輯

這裏是數據庫:

表MenuNavCategory

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

而且有插入到表中的一些價值。 我想在某個標籤上顯示'CategoryName'。 例如:

lblCat1 | lblCat2 | lblCat3 | lblCat4

然後,使用xReader.Read,數據庫上的值保存到基於該訂單號碼是標籤...

+0

您應該使用[IDataReader.Read(http://msdn.microsoft.com/en-us/library/system.data.idatareader.read.aspx)讀者前進到下一個記錄(例如'雖然xReader.Read'而不是'If xReader.Read')。 –

+0

@TimSchmelter:如何使用它?我已將'如果xReader.Read'更改爲''While xReader.Read'',但它是一樣的。 –

+0

然後您的數據源只有一條記錄。我假設數據庫中有多個菜單。你應該向我們展示SQL。 –

回答

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的是如何工作的一個例子。我會找到另一種實際編碼的方式,因爲上述依賴於數據庫中的行按正確順序排列,並且非常難看。