mysql - 打开阅读器时如何在 VB 中打开执行查询?

标签 mysql vb.net

是否有任何可能的方法来执行此操作而不会出现此错误“已经有一个打开的 DataReader 与此连接关联,必须先关闭它。”我已经尝试使用“dr.close()”,但我收到另一个错误,提示“阅读器关闭时读取尝试无效。”你能帮帮我吗?

这是我的代码:

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    Label2.Text = AllPicker1.Text
    Label3.Text = AllPicker2.Text
    If AllPicker1.Value >= AllPicker2.Value Then
        MsgBox("End Date Must be Greater!")
    Else
        Dim SQLstatement As String = "SELECT * FROM tblStudInfo,tbl_studentLog WHERE tblStudInfo.StudID = tbl_studentLog.StudentNumber AND tbl_studentLog.LoginDate BETWEEN '" & AllPicker1.Text & "' AND '" & AllPicker2.Text & "'"
        OpenData(SQLstatement)
    End If
End Sub

Public Sub OpenData(ByRef SQLstatement As String)
    Dim cmd As MySqlCommand = New MySqlCommand

    With cmd
        .CommandText = SQLstatement
        .CommandType = CommandType.Text
        .Connection = SqlConnection
        dr = .ExecuteReader()
    End With
    While dr.Read
        Dim SQLstatementSave As String = "INSERT INTO tbl_report (RepStudNo,RepName,RepCourse,RepDept,RepLogTime,RepLogdate) VALUES ('" & dr("StudID") & "','" & dr("Name") & "','" & dr("Course") & "','" & dr("Dept") & "','" & dr("LoginTime") & "','" & dr("LoginDate") & "') "
        dr.Close()
        Save(SQLstatementSave)
    End While
    SqlConnection.Close()
    SqlConnection.Dispose()
    SqlConnection.Open()
End Sub

Public Sub Save(ByRef SQLstatementSave As String)
    Dim cmd As MySqlCommand = New MySqlCommand

    With cmd
        .CommandText = SQLstatementSave
        .CommandType = CommandType.Text
        .Connection = SqlConnection
        .ExecuteNonQuery()
    End With

    SqlConnection.Close()
    SqlConnection.Dispose()
    SqlConnection.Open()
End Sub
End Class

最佳答案

看来您只使用了一个 SqlConnection。对于大多数数据库系统,您不能在读取连接时重用连接。您可以将所有数据读入内存/数据表并处理之后的行,或者为您的插入使用不同的 SqlConnection。

在使用 SqlConnections、Reader 和 Commands 时,我发现 Using Statement非常有助于可视化对象的使用和创建。

关于mysql - 打开阅读器时如何在 VB 中打开执行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19182437/

相关文章:

ASP.NET - ERR_EMPTY_RESPONSE/连接已重置/页面无法显示

java - [未解决]列表模型 list.removeAllElements java swing 的问题

c# - 在 vb.net 中将一张图片更改为另一张 onclick

c# - 无法连接到我的 Linux 服务器 MySQL DB

php - 在 1 个查询中选择/求和具有不同条件的列

vb.net - 使用 external.menuArguments 在 Internet Explorer 窗口中修改 HTML

vb.net - 保存文本框中的数据并保留在下一个 session 中

vb.net - 构建 Wix 项目时出现 System.OutOfMemoryException 错误

python - 属性错误 : 'MySQLCursor' object has no attribute 'commit'

php - 使用简单的 PDO 查询未将发布值输入数据库