Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为所有表单打开VB.NET MySQL连接_Mysql_Vb.net_Database Connection - Fatal编程技术网

为所有表单打开VB.NET MySQL连接

为所有表单打开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

在第一种形式中,我将在要打开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 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。但根据您的代码,这并不重要。

我们确实需要查看表单代码才能回答此问题。