MySqlDataAdapter SelectCommand语句

时间:2016-06-18 12:12:42

标签: mysql vb.net

我有以下功能代码:

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很新,想知道这样做是否有任何问题。

1 个答案:

答案 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的创建。