Vb.net 登录后出现错误:“已存在与此连接关联的打开的DataReader,必须先关闭它?”
我在主窗体中检索它:Vb.net 登录后出现错误:“已存在与此连接关联的打开的DataReader,必须先关闭它?”,vb.net,Vb.net,我在主窗体中检索它: Try rs.Connection = con cmd = "select * from cdcol.currency_rate" rs.CommandText = cmd res = rs.ExecuteReader While res.Read Dim currency = res.GetString("currency") ComboBox
Try
rs.Connection = con
cmd = "select * from cdcol.currency_rate"
rs.CommandText = cmd
res = rs.ExecuteReader
While res.Read
Dim currency = res.GetString("currency")
ComboBox2.Items.Add(currency)
End While
res.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
这是我能控制的
Try
rs.Connection = con
cmd = "select * from cdcol.currency_rate where currency='" & ComboBox2.Text & "'"
rs.CommandText = cmd
res = rs.ExecuteReader
While res.Read
If sell.Checked = True Then
buy.Text = res.GetDouble("buy_rate")
coderate.Text = res.GetString("code")
End If
If buy.Checked = True Then
sell.Text = res.GetDouble("sell_rate")
coderate.Text = ("PHP")
End If
End While
res.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
我登录时出现了一个错误,
我的密码怎么了?
请帮帮我。有些事情可能会发生,没有所有的代码很难说,但我会给你一些想法。我假设这是一个WinForms应用程序,也假设这是SQL Server 如果您已验证所有DataReader都已正确关闭,则如果两个DataReader在您的程序中使用共享连接(您说您正在使用选项卡控件并执行查询),则可能有两个DataReader正在同时尝试读取,如果你有一个阅读器在某处运行,然后你点击一个标签,你可能会遇到这种情况。如果这是您想要的行为,您可以通过向连接字符串添加“多个活动结果集”标志来允许多个记录集: 大概是这样的:
Dim connectionString As String = "Data Source=MSSQL1;" & _
"Initial Catalog=AdventureWorks;Integrated Security=SSPI;" & _
"MultipleActiveResultSets=True"
MSDN文章为您提供了更多关于它的信息。在您的场景中,这可能会起作用。MSDN提供了此选项,但这是您的另一个选项,请根据需要的方法使用连接,并在完成后将其丢弃:
MARS的设计目的不是为了消除多个应用程序的所有要求
应用程序中的连接。如果应用程序需要真正的并行
在对服务器执行命令时,应考虑多个连接
用过