mysql - vb net SQl查询问题

标签 mysql vb.net

我正在尝试使用 vb.net 中的阅读器检索一些数据。检索每一行的某些数据列没有任何问题,但我想检索每一行中的所有数据。我已经用 getstring() 命令尝试了几个不同的东西,但它没有用,而且我似乎找不到任何帮助来解决这个问题。我的代码是这样的

Private Function QueryDown(ByVal queryString)
    Dim returnInfo As New StringBuilder
    Try
        Dim newQuery As String() = Split(queryString, ":")
        For Each Query In newQuery
            Dim cmd As New MySqlCommand(Query, connection1)
            Dim reader As MySqlDataReader
            reader = cmd.ExecuteReader()

            While reader.Read()
                For a = 0 To reader.FieldCount
                    Dim strng As String = reader.GetString(a)
                    returnInfo.Append(strng & ",")
                Next

                returnInfo.Append(";")
            End While
            reader.Close()
        Next
    Catch ex As Exception
        console("Error with MySQL: " & ex.Message)
        Return ex.Message
    End Try
    Return returnInfo.ToString
End Function

抱歉,我在使用这段代码时遇到的错误是

There is already an open DataReader associated with this Connection which must be closed first

但是如果我将 getstring(a) 更改为 getstring(1) 一切都很好,我很困惑。 这里的任何帮助都会很棒,我想格式化代码以返回 column,column,coloumn;nextrow,如您所见(我希望)。因为我的每个表都有不同数量的列,所以我希望能够为每个表使用相同的功能。再次感谢。

最佳答案

上限是 reader.FieldCount - 1 而不是 reader.FieldCount 在:

For a = 0 To reader.FieldCount - 1

a 到达 reader.FieldCount 时出现异常 => reader.Close() 未执行 => 我想你调用这个函数(或另一个)用相同的连接打开一个新的阅读器 => 错误。

当您调用 getstring(1) 时,它会起作用,因为 1[0, FieldCount-1]

更新:

正如 @Zach Green 所说,尽可能始终使用 using 来替代 try...finally{ .Dispose() } :finally 中的 dispose 应用于 对象 beeing“used” 并调用 DataReader/DataConnection 它将调用 .Close() 为您服务。

关于mysql - vb net SQl查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5621125/

相关文章:

mysql - 如何使用EclipseLink和Joda-Time将UTC中的日期时间存储到数据库中?

php - 组合多个不同的值

Mysql my.cnf 文件阻止服务器启动

c# - .NET StringBuilder 前加一行

.net - 基于DependencyKey清理缓存

vb.net - 如何通过右键单击获取 super GridView 的列索引

mysql - 使用相同的表优化从子选择中选择

mysql - 将SQL Query简化为sql语句

java - 函数名称约定(任何类型的 PL)

.net - 无法为 SOAP 调用的 SSL/TLS 建立安全通道