我目前正在使用Visual Studio 2010(.Net 4.0)使用VB.Net,我需要您的幫助來創建一個集合類(我們稱之爲'cl_MyCollection'),它帶有一個構造函數接受兩個參數:以編程方式選擇要實例化的類
- 的
SqlDataReader
對象 - 有些指着我已經創建
的方案是一種自定義類的手段;我在SQL 2000中有五個數據庫表和五個VB.Net自定義類。 每個自定義類都包含一個變量,用於表示類表示的每個表的字段。 例如:「tbl_User」有2個字段「User_ID」和「User_Name」,而tbl_Family「有3個字段」Family_ID「,」Family_Name「和」Family_Location「
這是我創建的VB.Net自定義類,讀取和存儲的「tbl_User」表中的一條記錄:
Imports System.Data.SqlClient
Public Class cl_table_User
Property User_ID As Integer
Property User_Name As String
Public Sub New(ByRef rdr As SqlDataReader)
Me.User_ID = rdr("User_ID)
Me.User_Name = rdr("User_Name")
End Sub
End Class
我已經創建了類似的類爲其他數據庫表
的想法是執行SQL語句並使用結果來實例化了我('cl_MyCollection')。 我在想這樣的事情:('conn'是一個'SqlConnection'對象)
Dim cmd As SqlCommand = New SqlCommand("Select * From tbl_Users", conn) Dim rdr As SqlDataReader = cmd.ExecuteReader() Dim aCollection as new cl_MyCollection(rdr, "tbl_Users")
後來當我想用「tbl_Family」:
Dim cmd As SqlCommand = New SqlCommand("Select * From tbl_Family", conn) Dim rdr As SqlDataReader = cmd.ExecuteReader() Dim aCollection as new cl_MyCollection(rdr, "tbl_Family")
正如你可以看到第三行是傳遞兩個參數,SQLDataReader
和指向自定義類我有一些手段創建。此類的構造函數將遍歷結果並創建我創建的自定義類的對象。
我想第二個參數(以某種方式)使它決定使用哪個自定義類。 '不知何故'就是爲什麼我在這裏尋求你的幫助。
我能想到的唯一方法是設置一個select case並列出每個自定義類,然後創建一個自定義類的對象,但我希望有更好的方法。目前,我有它成立這樣的:
Public Class cl_MyCollection Private records As New Collection Public Sub New(rdr As SqlDataReader, selectedClass as string) Select Case selectedClass Case "tbl_User" While (rdr.Read()) Dim thisRecord as new cl_table_User(rdr) records.Add(thisRecord) End While Case "tbl_Family" While (rdr.Read()) dim thisRecord as new cl_table_Family(rdr) records.Add(thisRecord) End While End Select End Sub End Class
理想我想下面的代碼工作,或至少知道它代表:
Public Class cl_MyCollection Private records As New Collection Public Sub New(rdr As SqlDataReader, selectedClass as TYPE) While (rdr.Read()) Dim thisRecord as new selectedClass(rdr) records.Add(thisRecord) End While End Sub End Class
這可能嗎?或者我需要堅持選擇案例?
P.S對不起,這篇文章的長度。 編輯:固定錯字,選擇案例現在指向第二個參數('selectedClass')最初的目的。
你看過ORM嗎? – 2010-07-07 14:38:33
Thankyou的回覆,我看了幾個ORM技術和Collections.Generic庫,但我無法理解如何實現其中任何一個以適應我現有的代碼。我能問一下你們如何期望我的代碼能夠看到新的想法?從那裏我應該能夠適應我的項目的其餘部分。謝謝你的幫助。 – user328414 2010-07-07 16:15:54