我已经正确关闭了所有阅读器,不是吗?每次触发函数都会报错
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] 删除。
我来说两句