首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySqlDataAdapter SelectCommand语句

MySqlDataAdapter SelectCommand语句
EN

Stack Overflow用户
提问于 2016-06-18 12:12:42
回答 1查看 316关注 0票数 2

我有以下功能代码:

代码语言:javascript
复制
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

我注意到,如果我也使用

代码语言:javascript
复制
Dim dAdapter As New MySqlDataAdapter(Query, MysqlConn)

而不是:

代码语言:javascript
复制
Cmd = New MySqlCommand(Query, MysqlConn)
Dim dAdapter As New MySqlDataAdapter
dAdapter.SelectCommand = Cmd

显然,我想用一行而不是三行。不过,我对VB相当陌生,我想知道这样做是否有任何问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-18 17:00:16

我们试着改进你的代码..。

首先,ConnSettings不初始化全局连接变量,而是初始化本地连接变量并返回

代码语言:javascript
复制
Public Function ConnSettings() As MySqlConnection
    Dim conn As MySqlConnection
    conn = new MySqlConnection(yourConnectionStringHere)
    conn.Open()
    return conn
End Function

现在,需要MySqlConnection的代码可以调用这个ConnSettings,并将返回值放入Using语句中。

代码语言:javascript
复制
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的创建。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37896788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档