私はすべての読者を正しく閉じませんでしたか?関数をトリガーするたびに、エラーが発生します。他の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
デバッガはこの辺りでエラーを指摘:IDisposableをを持っているすべてのために
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
であるあなたは、読んで理解し、ボビーテーブルが訪ねて来る前に、パラメータ化クエリを使用して起動する必要があります。 http://bobby-tables.com/このコードは、SQLインジェクションに広く公開されています。 –
wtfはボビーテーブルですか? – bidipeppercrap
リンクに従ってください。それはSQLインジェクションについての漫画です。あなたのコードは、この脆弱性がどのように機能するかの典型的な例です。 –