我想生成一组类/单例来访问sqlserver数据库。我知道存在诸如实体框架之类的东西,但我想要自己的解决方案。 遵守下面的伪代码
Class Database
Dim ConnectionX As SqlClient.SqlConnection
Function getDataTable(Query As String) As DataTable
Uses ConnectionX
End Function
?:Schema1
Structure Table1
Dim Field1
Dim Field2
End Structure
Function Insert_Table1(Field1, Field2) As Table1
Uses ConnectionX
End Function
Function Update_Table1(Field1, Field2) As Table1
Uses ConnectionX
End Function
Sub Delete_Table1(Field1)
Uses ConnectionX
End Sub
我想要“数据库”类的多个实例,以便可以更改连接字符串以访问P的D,T,A 类/单例/结构“模式”表示数据库中的模式(上面的“?”)。我不想要架构的多个实例。 在架构中,存在表示架构中的表,视图和表值函数的结构 在模式下,我需要使用数据库连接来向表中插入,更新和删除表的功能。
这可以在VB中完成吗?
答案 0 :(得分:2)
如果我对您的理解正确,一种选择是为类Private
构造构造函数,并使用Shared
方法获取基于连接字符串的实例。如果提供的连接字符串已经存在一个实例,则返回该实例,否则创建一个新实例。
Public Class Database
Private Shared ReadOnly instances As New List(Of Database)
Public Shared Function GetInstance(connectionString As String) As Database
Dim instance = instances.SingleOrDefault(Function(db) db.ConnectionString)
If instance Is Nothing Then
instance = New Database(connectionString)
instances.Add(instance)
End If
Return instance
End Function
Public ReadOnly Property ConnectionString As String
Private Sub New(connectionString As String)
Me.ConnectionString = connectionString
End Sub
'...
End Class
然后,只要需要实例,就可以在代码中执行以下操作:
Dim db = Database.GetInstance("Data Source=MyServer;Initial Catalog=MyDatabase;Integrated Security=SSPI;")
要记住的一件事是,您实际上可以拥有与String
对象不同的有效相等的连接字符串,因此您可能希望在类内部使用稍微更严格的比较。不过,我会将决定和实施留给您。