为所有表单打开VB.NET MySQL连接
在第一种形式中,我将在要打开DB连接的文件夹中加载选项卡 我编写了一个类,使我能够打开和关闭连接为所有表单打开VB.NET MySQL连接,mysql,vb.net,database-connection,Mysql,Vb.net,Database Connection,在第一种形式中,我将在要打开DB连接的文件夹中加载选项卡 我编写了一个类,使我能够打开和关闭连接 Imports System Imports System.Data Imports MySql.Data.MySqlClient Public Class DBConn Dim conn As New MySqlConnection Dim connString As String Dim DataSchnitstelel As MySqlDataAdapter Public Func
Imports System
Imports System.Data
Imports MySql.Data.MySqlClient
Public Class DBConn
Dim conn As New MySqlConnection
Dim connString As String
Dim DataSchnitstelel As MySqlDataAdapter
Public Function verbindungString(ByVal Server As String, ByVal UID As String, ByVal PWD As String, _
ByVal Datenbank As String)
connString = "server=" & Server & ";uid=" & UID & ";pwd=" & PWD & ";database=" & Datenbank & ";"
connString = CStr(connString)
End Function
Public Sub Open()
conn.ConnectionString = connString
Try
conn.Open()
MsgBox(connString)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Public Function Close()
If conn.State = ConnectionState.Open Then
Try
conn.Close()
MessageBox.Show("Closed!")
Catch ex As Exception
MessageBox.Show("Something Wrong" & ex.Message)
End Try
Else
MessageBox.Show("Verbindung bereitsgeschlossen")
End If
End Function
Public Function UpdateStatus()
Dim Klank As Boolean
If conn.State = 1 Then
Klank = True
End If
If conn.State = 0 Then
Klank = False
End If
Return Klank
End Function
Public Function SQLSelect()
End Function
末级
在第二种形式中,我连接到数据库。
连接已成功打开,但未以第一种形式打开:
有什么问题吗?如果在每个表单中声明连接类的名称与new DBConn相同,那么问题很明显:它们不知道彼此的存在。如果在表单之外还有一个模块,其中将DBConn实例声明为Friend,那么所有表单都会知道这个模块,我想问题是在这两种表单中都使用了它
Dim bla as New DBConn
相反,您可以使用单例模式。在DBConn类中添加以下代码:
'Make Constructor Private to disallow creating an Instance from somewhere else
Private Sub New()
End Sub
'Variable to share the only created instance
Private Shared _Instance As DBConn
'Function to get access to the only instance
Public Shared ReadOnly Property Instance() As DBConn
Get
If _Instance Is Nothing Then
_Instance = New DBConn
End If
Return _Instance
End Get
End Property
在这些更改之后,您需要将每个表单中的一行“更正”为以下内容:
Dim bla as DBConn = DBConn.Instance
这应该确保两个表单都请求一个实例,并且只在第一次创建实例时才请求。所有后续请求都接收相同的实例
还有一件事:如果“WithEvents”或任何EventHandling连接到该单例,那么请确保在关闭/处置form1时将DBConn变量设置为nothing。但根据您的代码,这并不重要。我们确实需要查看表单代码才能回答此问题。