我目前正在使用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