【发布时间】:2015-03-28 15:05:50
【问题描述】:
请帮助....当我从 Mysql 表中选择数据时,它显示“已经有一个打开的 DataReader 与此连接关联,必须先关闭。vb.net”
Private Sub cmbJobCategoryVisa_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbJobCategoryVisa.SelectedIndexChanged
''"
Dim MyCommand As New MySqlCommand("SELECT jobcategorycode FROM jobcategory WHERE jobcategory='" & Me.cmbJobCategoryVisa.SelectedItem & "'", MyConnection)
Dim MyReader As MySqlDataReader = MyCommand.ExecuteReader
While MyReader.Read
If MyReader.HasRows = True Then
Me.txtJobCategoryCodeVisa.Text = MyReader("jobcategorycode")
End If
End While
MyReader.Close()
MyCommand.Dispose()
End Sub
'''在下面的代码执行时,,,图像错误正在显示
Private Sub txtEmpNo_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtEmpNo.Validating
Dim MyCommand5 As New MySqlCommand("SELECT * FROM employeesmaster WHERE empno='" & Me.txtEmpNo.Text & "'", MyConnection)
Dim MyDataReader5 As MySqlDataReader = MyCommand5.ExecuteReader
If MyDataReader5.HasRows = True Then
While MyDataReader5.Read
Me.txtEmpName.Text = MyDataReader5("name")
Me.cmbNationality.Text = MyDataReader5("nationality")
Me.cmbJobCategoryVisa.Text = MyDataReader5("jobcategoryvisa")
If Not IsDBNull(MyDataReader5("image")) Then
Dim ImageData As Byte() = DirectCast(MyDataReader5("image"), Byte())
Dim MemoryStream As New IO.MemoryStream(ImageData)
Me.pbxEmpImage.Image = Image.FromStream(MemoryStream)
Else
Me.pbxEmpImage.Image = Nothing
End If
End While
Else
End If
MyDataReader5.Close()
MyCommand5.Dispose()
End Sub
【问题讨论】:
-
不要重复使用连接。使用
Using-statement 确保它们被丢弃->即使出现错误也尽快关闭。数据读取器也使用Using-statement。 -
能否请您发布此图片的代码?
-
正如错误消息所说,一个连接上不能有两个打开的 DataReader。
-
您是否在数据读取器循环中使用数据读取器?所以不要
标签: .net vb.net connection-pooling