我有以下功能代码:
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相当陌生,我想知道这样做是否有任何问题。
发布于 2016-06-18 17:00:16
我们试着改进你的代码..。
首先,ConnSettings不初始化全局连接变量,而是初始化本地连接变量并返回
Public Function ConnSettings() As MySqlConnection
Dim conn As MySqlConnection
conn = new MySqlConnection(yourConnectionStringHere)
conn.Open()
return conn
End Function现在,需要MySqlConnection的代码可以调用这个ConnSettings,并将返回值放入Using语句中。
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的创建。
https://stackoverflow.com/questions/37896788
复制相似问题