MySql,传递datareader,关闭连接

时间:2013-01-26 11:07:08

标签: mysql vb.net mysqldatareader

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

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并传递DataTable,即使是1行预期结果,为什么还要使用Reader(如果这么复杂)?

1 个答案:

答案 0 :(得分:0)

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

优异,