我在mainform中检索它:
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
这在我的tabcontrol中
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
当我登录时出现错误, 我的代码出了什么问题? 请帮帮我..
答案 0 :(得分:0)
有些事情可能正在进行,没有所有代码很难说,但我会给你一些想法。我假设这是一个WinForms应用程序(也假设这是SQL Server)?
如果您已经确认所有DataReader都已正确关闭,那么如果他们在您的程序中使用共享连接,则可能有两个DataReader实际上同时尝试读取(您说你是使用选项卡控件并执行查询,如果您有一个读取器在某处运行,然后单击选项卡,您可能会遇到该场景)。如果这是您期望的行为,则可以通过将多个活动结果集标志添加到连接字符串来允许多个记录集:
https://msdn.microsoft.com/en-us/library/h32h3abf(v=vs.110).aspx
这样的事情:
Dim connectionString As String = "Data Source=MSSQL1;" & _
"Initial Catalog=AdventureWorks;Integrated Security=SSPI;" & _
"MultipleActiveResultSets=True"
MSDN文章为您提供了更多有关它的信息。在你的场景中,这可能会奏效。 MSDN提供了这个(这是你的另一个选择,使用你需要的每个方法的连接并在你完成后处理它):
“MARS并非旨在消除多重要求 应用程序中的连接。如果应用程序需要真正并行 对服务器执行命令,应该是多个连接 使用“。