我有以下功能代码:
Call ConnSettings()
Dim objDs As New DataSet
Dim Query As String
Query = "the query"
Cmd = New MySqlCommand(Query, MysqlConn)
Dim dAdapter As New MySqlDataAdapter
dAdapter.SelectCommand = Cmd
''Dim dAdapter As New MySqlDataAdapter(Query, MysqlConn)
Try
MysqlConn.Open()
dAdapter.Fill(objDs)
MysqlConn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
MysqlConn.Dispose()
End Try
我注意到如果我也使用
,代码也同样有用Dim dAdapter As New MySqlDataAdapter(Query, MysqlConn)
而不是:
Cmd = New MySqlCommand(Query, MysqlConn)
Dim dAdapter As New MySqlDataAdapter
dAdapter.SelectCommand = Cmd
显然,我想用一行而不是三行。但是,我对VB很新,想知道这样做是否有任何问题。
答案 0 :(得分:0)
让我们尝试改进您的代码......
首先,ConnSettings不会初始化全局连接变量,而是初始化连接变量并将其返回
Public Function ConnSettings() As MySqlConnection
Dim conn As MySqlConnection
conn = new MySqlConnection(yourConnectionStringHere)
conn.Open()
return conn
End Function
现在需要MySqlConnection的代码可以调用此ConnSettings并将返回值放入Using Statement
objDS = new DataSet()
Try
Using conn = ConnSettings()
Using dAdapter = New MySqlDataAdapter(theQuery, conn)
dAdapter.Fill(objDs)
End Using
End Using
Catch(ex as Exception
MessageBox.Show(ex.Message)
End Try
此代码将连接返回到Using语句中。当代码流出Using语句时,连接被关闭并处理掉(对于MySqlDataAdapter也是如此)正如您所看到的,不需要Finally子句和Try / Catch块只是因为您想要给出错误消息对于您的用户(虽然这是一种常见的做法,但是让您的用户处于不合适的位置以尝试理解这些技术密集的消息,更好地使用日志文件并建议您的用户将日志发送给您)没有任何意义。
在这种情况下,ConnSettings中的代码也有点无用。你真正需要的只是连接字符串,你可以直接在调用代码中编写MySqlConnection的创建。