Vb.net 已经有一个与此连接关联的打开的DataReader,必须在vb 2010 professional中首先关闭它
我正在使用vb 2010 professional,我遇到了“已经有一个打开的Vb.net 已经有一个与此连接关联的打开的DataReader,必须在vb 2010 professional中首先关闭它,vb.net,Vb.net,我正在使用vb 2010 professional,我遇到了“已经有一个打开的DataReader与此连接关联,必须先关闭该连接”的问题 这是我的完整源代码: Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick MysqlConn = New MySqlConnection MysqlConn.ConnectionStri
DataReader
与此连接关联,必须先关闭该连接”的问题
这是我的完整源代码:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
MysqlConn = New MySqlConnection
MysqlConn.ConnectionString = "server=localhost;userid=root;password=;database=penjara"
Dim Reader As MySqlDataReader
MysqlConn.Open()
Dim query As String
Dim spath As String
Dim count As Integer = 0
Dim mysound As Media.SoundPlayer
query = "select* from penjara.info"
Command = New MySqlCommand(query, MysqlConn)
Reader = Command.ExecuteReader
While Reader.Read
count = count + 1
query = "Select penjara.info where no =count"
Command = New MySqlCommand(query, MysqlConn)
Reader = Command.ExecuteReader
If (Reader.GetInt32("keadaan") = 1) & (Reader.GetInt32("no") = count) Then
Form2.Show()
Me.Hide()
spath = "C:\Users\User\Music\emergency003.wav"
mysound = New Media.SoundPlayer(spath)
mysound.PlayLooping()
ElseIf (Reader.GetInt32("keadaan") = 1) & (Reader.GetInt32("no") = count) Then
Form3.Show()
Me.Hide()
spath = "C:\Users\User\Music\emergency003.wav"
mysound = New Media.SoundPlayer(spath)
mysound.PlayLooping()
ElseIf (Reader.GetInt32("keadaan") = 1) & (Reader.GetInt32("no") = count) Then
Form4.Show()
Me.Hide()
spath = "C:\Users\User\Music\emergency003.wav"
mysound = New Media.SoundPlayer(spath)
mysound.PlayLooping()
ElseIf (Reader.GetInt32("keadaan") = 1) & (Reader.GetInt32("no") = count) Then
Form5.Show()
Me.Hide()
spath = "C:\Users\User\Music\emergency003.wav"
mysound = New Media.SoundPlayer(spath)
mysound.PlayLooping()
ElseIf (Reader.GetInt32("keadaan") = 1) & (Reader.GetInt32("no") = count) Then
Form5.Show()
Me.Hide()
spath = "C:\Users\User\Music\emergency003.wav"
mysound = New Media.SoundPlayer(spath)
mysound.PlayLooping()
End If
End While
End Sub
您正在读卡器上循环,然后尝试在读卡器上打开新的读卡器
While Reader.Read <<< looping on this
count = count + 1
query = "Select penjara.info where no =count"
Command = New MySqlCommand(query, MysqlConn) <<<<<<<<<<<<< trying to open new one
Reader = cmd.ExecuteReader <<<<<<<<<<<<< trying to open new one
在循环的底部
End Using
End Using
End Using
因为这将关闭打开的连接
此外,该查询看起来很可疑。您确定不想要类似
query = String.Format("Select penjara.info where no ={0}", count)
显示此错误是因为在计时器的下一个滴答声中尝试执行代码时连接已打开。因此,通过此代码打开连接可以避免这种情况
If MysqlConn.State = ConnectionState.Open Then
MysqlConn.Close()
else
MysqlConn.Open()
End If
我改了,但问题还是一样。我更改了命令和读卡器,但仍不工作。。帮助我:(你说你改变了它。你做了什么改变?我已经编辑了答案。请检查全部内容。请编辑你的问题。不要在评论中发布代码。
query = String.Format("Select penjara.info where no ={0}", count)
If MysqlConn.State = ConnectionState.Open Then
MysqlConn.Close()
else
MysqlConn.Open()
End If