我在VB.NET中有一個小的需求,那就是用從表中檢索的值填充一個數組。那就是我有一個名爲「user_roles」的表,它具有名爲「role_id」和「role_name」的列。在表單的加載事件中,我想執行一個過程並將表「user_roles」中的所有項(role_id)填充到數組中。用表中的項填充數組
任何人都可以請這個要求幫助我。
問候, 喬治
我在VB.NET中有一個小的需求,那就是用從表中檢索的值填充一個數組。那就是我有一個名爲「user_roles」的表,它具有名爲「role_id」和「role_name」的列。在表單的加載事件中,我想執行一個過程並將表「user_roles」中的所有項(role_id)填充到數組中。用表中的項填充數組
任何人都可以請這個要求幫助我。
問候, 喬治
我認爲你最好使用generic list而不是數組。如我錯了請糾正我。
如果您在代碼隱藏中填充了表,則可以遍歷所有行來添加rolw_id。
Dim allRoleIDs As New List(Of Int32)
For Each row As DataRow In user_roles.Rows
allRoleIDs.Add(CInt(row("role_id)")))
Next
考慮到由於性能原因,此處更好地使用Datareader。
當您使用強類型數據集並且希望在填充數據表以添加ID到列表之後避免額外的往返時,您必須擴展自動生成的數據集DataAdapter類(f.e。稱爲user_rolesTableAdapter)。
不要使用Dataset的designer.vb類,因爲它將在每個數據集更改上被覆蓋。使用它的代碼隱藏類(沒有designer.vb),並首先添加自動生成的TableAdapter中相同的名稱空間(f.e。DatasetNameTableAdapter,其中DatasetName是您的數據集的名稱)。然後添加下面的類(更換正確的命令,列索引,局部類的類名):
Namespace DatasetNameTableAdapters
Partial Public Class user_rolesTableAdapter
Public Function getListOfUserRolesID() As System.Collections.Generic.List(Of System.Int32)
Dim list As New System.Collections.Generic.List(Of System.Int32)
Dim command As System.Data.SqlClient.SqlCommand = Me.CommandCollection(0)
Dim previousConnectionState As System.Data.ConnectionState = command.Connection.State
If ((command.Connection.State And System.Data.ConnectionState.Open) _
<> System.Data.ConnectionState.Open) Then
command.Connection.Open()
End If
Try
Using reader As System.Data.SqlClient.SqlDataReader = command.ExecuteReader
While reader.Read
list.Add(reader.GetInt32(0))
End While
End Using
Finally
If (previousConnectionState = System.Data.ConnectionState.Closed) Then
command.Connection.Close()
End If
End Try
Return list
End Function
End Class
End NameSpace
現在,你可以得到user_roles的ID直接從DataAdapter的泛型列表不會對填充迭代兩次(第一次數據表和第二個添加到列表的ID)。
當然,您也可以在Page.Load中使用此Datareader方法而不使用數據集。
非常感謝Tim和Generics是一個非常好的方法。我正在使用VB.NET 2005,我可以在那裏使用泛型。 – 2010-09-04 05:01:00
@George,是的,你可以在VB.NET 2005中使用泛型。它們是在.NET 2.0中引入的,這是VB.NET 2005的目標。 – 2010-09-10 14:30:49
好的建議。我正要建議一個Using塊,但這些塊在VB中不可用,直到3.5。 – 2010-09-10 14:31:35
問題:你如何獲取信息?你是將它拉入DataSet中還是將它拉入DataReader? – XstreamINsanity 2010-09-03 14:32:51
親愛的,有可能給我一個例子,說明如何使用DataReader完成此操作。我還沒有嘗試過,但我有相同的要求。 – 2010-09-04 05:10:04