MySql,传递数据读取器,关闭连接

Posted

技术标签:

【中文标题】MySql,传递数据读取器,关闭连接【英文标题】:MySql, passing datareader, closing connections 【发布时间】:2013-01-26 11:07:08 【问题描述】:

我知道有人问过这个问题,但我真的找不到最好的解释。 我有一个 mysql DataReader 函数,它应该从数据库中获取一行并“按原样”返回它,因为我想在其他地方处理数据

Private Function GetRow(ByVal sql As String) As MySqlDataReader

    Dim cmd As New MySqlCommand

    Try

        cmd.Connection = New MySqlConnection() With .ConnectionString = connString
        cmd.CommandText = sql
        cmd.CommandType = CommandType.Text

        cmd.Connection.Open()

        Using dr As MySqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

            If dr.HasRows Then

                dr.Read()

            End If

            Return dr

        End Using

    Catch ex As MySqlException

        MsgBox(("Error #" & ex.Number & " while reading from DB has occurred: ") + vbCrLf + ex.Message, MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Error!")

    Finally

        cmd.Connection.Close()
        If cmd IsNot Nothing Then cmd.Dispose()

    End Try

    Return Nothing

End Function 

每次我使用该函数时,连接都保持打开状态(池已禁用),因此我开始对 MySqlDataReader 使用“using”语句,以及“finally”处理连接本身。但现在该函数总是返回 DR 什么都没有,可能是“使用”处置 Read() 结果。

现在的问题是如何“按原样”传递 Read() 整行?如果我可以使用 TableAdapter 并为 1 行预期结果传递 DataTable,我为什么还要使用 Reader(如果这么复杂)?

【问题讨论】:

【参考方案1】:

请关闭,我在这里找到了一个优雅的解决方案,使用字典作为返回 Storing results of a DataReader into an array in VB.NET

优秀,

【讨论】:

以上是关于MySql,传递数据读取器,关闭连接的主要内容,如果未能解决你的问题,请参考以下文章

Android,从 MySQL 读取数据后,屏幕显示关闭后填充列表视图

azure blob storage-无法从传输连接读取数据:现有连接被远程主机强行关闭

C#连接mysql数据库 无法读取数据库表中信息 求大神指点迷津!

关闭后从套接字读取数据

php读取mysql数据后如何自动添加一个序号列?

PHP读取配置文件连接MySQL数据库