如何重新声明一个类的实例?

时间:2015-12-09 12:07:33

标签: vb.net

我正在清理vb.net需要工作,我有一个问题,我希望你能澄清一下。我的应用程序需要与数据库建立连接,现在当表单加载时我执行此函数:

file-right

问题是Sub OpenConnection() Try Dim connection As New Connection Dim MysqlConn = connection.establishConnection() MysqlConn.Open() Catch myerror As MySqlException MessageBox.Show("Connection failed: " & myerror.Message) Finally MysqlConn.Dispose() End Try End Sub connection变量也用在另一个函数中,因此我将这两个变量声明为全局变量。如何在MysqlConn'中重新声明此变量,因为我有一个用户可以更改设置连接字符串的表单。现在,如果软件无法连接到数据库以获取错误的凭据,则用户将其更改为设置表单但如果我删除OpenConnection()connection,则应用程序使用类的过去实例,即使凭据是正确的,而不是声明应用程序无法连接的新连接实例。目前我已经在MysqlConn内部重新声明了解决了,但这是一个很好的举动吗?有没有办法让两个全局变量调用一个新实例而不重新定义函数?

连接类 - EstablishConnection功能

OpenConnection()

1 个答案:

答案 0 :(得分:2)

如何重新声明类的实例?

声明变量。
对象是实例化的(实例化)。

他们永远不会重新宣布;刚刚创建了另一个新的。走这条线(与你的相似):

Dim connection As MySQLConnection

它声明一个变量,给它一个名称和类型。

Dim connection As MySQLConnection = New MySQLConnection

第二部分创建一个实例 - New运算符是关键:它创建一个 new 实例。您使用的简写形式同时进行,并且可能不清楚2个不同的操作 - 声明变量创建实例 - 正在进行中。

显然,你有一个名为Connection的班级来管理"连接。但是top方法OpenConnection只是用它来设置/重置一些全局对象var。通常应该创建,使用和处理dbConnections。

像你这样的连接制造商助手可以防止连接字符串 洒遍了整个代码。例如:

Function GetMySQLConnection(Optional usr As String = "root",
                       Optional pw As String = "123456") As MySqlConnection
    Dim conStr As String
    conStr = String.Format("Server=localhost;Port=3306;Database={0};Uid={1}; Pwd={2};", 
         MySQLDBase, usr, pw)

    Return New MySqlConnection(constr)
End Function

这可能是保存DBname和其他登录信息的小类的一部分。但使用它不需要全局变量:

Sub GetSomeData(...)
    Using dbCon As MySqlConnection = GetMySQLConnection()
        ...
        dbCon.Open()

        myDA.Fill(myDT)
        ...

    End Using
End Sub

一开始,为这组操作创建 new 连接对象,该对象仅存在于本地(在该方法中)。 Using块确保连接已关闭(并返回到池中),并在完成后将其丢弃。