其他 SqlDataReader 需要关闭,虽然我已经关闭了其他任何

废话

我已经正确关闭了所有阅读器,不是吗?每次触发函数都会报错

System.InvalidOperationException: '阅读器关闭时调用 Read 的尝试无效。

现在我真的很沮丧。

我的代码有什么问题?一切似乎都很好。

Private Sub Button_EditData_Click(sender As Object, e As EventArgs) Handles Button_EditData.Click
    FormEnabler()
    Me.TextBox_BranchID.Enabled = False
    Me.Button_AddNew.Enabled = False
    Me.Button_EditData.Enabled = False
    Me.Button_DeleteData.Enabled = False
    Me.Button_Save.Enabled = True
    Me.Button_Cancel.Enabled = True
    Me.Button_ManageThisBranchStock.Enabled = False
    Me.Button_ManageThisBranchEmployee.Enabled = False

    theConnection.Open()

    Dim theEditInputCommand As New SqlCommand
    Dim theEditInputDataReader As SqlDataReader

    theEditInputCommand.Connection = theConnection
    theEditInputCommand.CommandText = "SELECT * FROM Branch WHERE BranchID = '" & Me.TextBox_BranchID.Text & "'"
    theEditInputDataReader = theEditInputCommand.ExecuteReader()

    If theEditInputDataReader.Read() Then
        Me.TextBox_Title.Text = theEditInputDataReader.Item("Title")
        Me.RichTextBox_Address.Text = theEditInputDataReader.Item("Address")
        Me.TextBox_ContactNumber.Text = theEditInputDataReader.Item("ContactNo")
        Me.ComboBox_BranchManager.Text = theEditInputDataReader.Item("BranchManager")
        theEditInputDataReader.Close()
    End If

    theConnection.Close()

    theConnection.Open()

    Dim theEditInputBranchManagerCommand As New SqlCommand
    Dim theEditInputBranchManagerDataReader As SqlDataReader
    Dim theEditInputBranchManagerDataTable As New DataTable

    theEditInputBranchManagerCommand.Connection = theConnection
    theEditInputBranchManagerCommand.CommandText = "SELECT EmployeeID FROM AssignmentDetail WHERE BranchID = '" & Me.TextBox_BranchID.Text & "'"
    theEditInputBranchManagerDataReader = theEditInputBranchManagerCommand.ExecuteReader()
    theEditInputBranchManagerDataTable.Load(theEditInputBranchManagerDataReader)

    If theEditInputBranchManagerDataReader.Read() Then
        Me.ComboBox_BranchManager.ValueMember = "EmployeeID"
        Me.ComboBox_BranchManager.DisplayMember = "EmployeeID"
        Me.ComboBox_BranchManager.DataSource = theEditInputBranchManagerDataTable
        theEditInputBranchManagerDataReader.Close()
    Else
        Me.ComboBox_BranchManager.ValueMember = "'-'"
        theEditInputBranchManagerDataReader.Close()
    End If

    theConnection.Close()
End Sub

调试器指出这里的错误:

If theEditInputBranchManagerDataReader.Read() Then
    Me.ComboBox_BranchManager.ValueMember = "EmployeeID"
    Me.ComboBox_BranchManager.DisplayMember = "EmployeeID"
    Me.ComboBox_BranchManager.DataSource = theEditInputBranchManagerDataTable
    theEditInputBranchManagerDataReader.Close()
Else
    Me.ComboBox_BranchManager.ValueMember = "'-'"
    theEditInputBranchManagerDataReader.Close()
End If
梅德里克

对于具有IDisposable 的所有内容,您应该实施USING

Using reader As SqlDataReader = command.ExecuteReader()
    While reader.Read()
        FPath = reader(0)
    End While
End Using

如果您不想使用USING最终与 SQL 一起工作,请确保处理读取器.Dispose()总是很好使用:

SqlConnection.ClearPool(con)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JACK关闭其他声音

来自分类Dev

onclick关闭其他onclicks

来自分类Dev

预期关闭,发现其他关闭

来自分类Dev

在esc键上关闭iframe或单击其他任何位置

来自分类Dev

在esc键上关闭iframe或单击其他任何位置

来自分类Dev

打开其他表单时关闭表单

来自分类Dev

关闭其他表单后刷新ListBox

来自分类Dev

Onclick应该关闭其他打开的元素

来自分类Dev

如何关闭tmux中的其他窗口?

来自分类Dev

Pyqt 检查其他窗口何时关闭

来自分类Dev

C#SqlDataReader被关闭

来自分类Dev

单击关闭时关闭弹出窗口和其他脚本

来自分类Dev

单击关闭时关闭弹出窗口和其他脚本

来自分类Dev

如何关闭MainForm,而不关闭其他表单?

来自分类Dev

检测Synology关闭以关闭其他服务器

来自分类Dev

当其他文本字段ios出现弹出窗口时如何关闭已经打开的键盘

来自分类Dev

虽然,如果和其他条件

来自分类Dev

需要其他模块的包装

来自分类Dev

需要显示其他信息

来自分类Dev

Webpack 需要其他库

来自分类Dev

通过单击其他任何位置来关闭切换框?

来自分类Dev

在Tkinter中运行无限循环时如何使用关闭(X)或任何其他按钮

来自分类Dev

在屏幕上其他任何地方单击鼠标时,关闭浏览器窗口

来自分类Dev

通过单击其他任何位置来关闭切换框?

来自分类Dev

如果其他如果其他

来自分类Dev

批次-如果,其他,其他

来自分类Dev

没有其他“如果”的“其他”

来自分类Dev

没有其他“如果”的“其他”

来自分类Dev

其他 / 其他 如果不工作