Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim n As Integer = 0
str = "select Vote from vote where party='Green'"
cmd = New SqlCommand(str, con)
con.Open()
dr = cmd.ExecuteReader()
if dr.HasRows Then
dr.Read()
n = dr("Vote").ToString()
n = n + 1
Label8.Text = n.ToString()
End If
str = "update Vote set vote='" + n.ToString() + "' where party='Green'"
cmd = New SqlCommand(str, con)
cmd.ExecuteNonQuery()
dr.Read()
cmd.Dispose()
con.Close()
End Sub
0
A
回答
1
该消息似乎很清楚。你必须要使用另一个操作
虽然正在使用SqlDataReader的连接之前关闭DataReader,关联的SqlConnection是 忙于服务SqlDataReader中,并没有其他操作可能是 除了关闭它之外,在SqlConnection上执行。 的情况就是这种情况,直到SqlDataReader的Close方法被调用。例如, 直到调用关闭之后才能检索输出参数。
....
dr.Close()
str = "update Vote set vote='" + n.ToString() + "' where party='Green'"
cmd = New SqlCommand(str, con)
cmd.ExecuteNonQuery()
' ??? dr.Read()
cmd.Dispose()
con.Close()
顺便说一句,你的整个代码可以使用的ExecuteScalar来检索最后一投的价值和倾销DataReader的
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim n As Integer = 0
str = "select Vote from vote where party='Green'"
Using cmd = New SqlCommand(str, con)
con.Open()
Dim n as Integer
Dim result = cmd.ExecuteScalar()
if result IsNot Nothing Then
n = Convert.ToInt32(result) + 1
else
n = 1
End If
Label8.Text = n.ToString()
str = "update Vote set vote='" + n.ToString() + "' where party='Green'"
cmd.CommandText = str
cmd.ExecuteNonQuery()
con.Close()
End Using
End Sub
在这种情况下,你使用全局连接对象,这可以简化应该避免。请记住,在需要使用连接时创建,打开,使用和销毁连接总是更好。的SqlClient类可以使用Connection Pooling基础设施,可以帮助很多在管理像
0
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
try
Dim n As Integer = 0
str = "select Vote from vote where party='Green'"
cmd = New SqlCommand(str, con)
con.Open()
dr.Close()
dr = cmd.ExecuteReader()
if dr.HasRows Then
dr.Read()
n = dr("Vote").ToString()
n = n + 1
Label8.Text = n.ToString()
End If
str = "update Vote set vote='" + n.ToString() + "' where party='Green'"
cmd = New SqlCommand(str, con)
cmd.ExecuteNonQuery()
dr.Read()
Finally
cmd.Dispose()
con.Close()
End Try
End Sub
0
添加设为您的连接字符串的多个活动结果的连接宝贵的资源如下图所示
例子:
"Server=Server;Database=MyDatabase;Trusted_Connection=True;MultipleActiveResultSets=true;"
相关问题
- 1. 已经有与此命令必须先关闭相关联的打开的DataReader
- 2. 与此命令相关联的datareader已经打开,它必须先关闭
- 3. 错误:已经有一个用此命令,必须先关闭相关联的打开的DataReader
- 4. 与此命令关联的DataReader必须先关闭
- 5. 错误:已经有一个与此命令关联的打开的DataReader,必须先关闭
- 6. 错误:已经有一个打开的DataReader与此命令关联,必须先关闭
- 7. 库 - 与此命令相关开放的DataReader,必须首先
- 8. vb.net已经有与此连接关联的开放的DataReader,必须先关闭
- 9. 已经有与此连接关联的DataReader的开放必须先关闭VB.NET
- 10. 已经有一个与此命令关联的开放DataReader,它必须先关闭。
- 11. EF6 - 已经有一个开放的DataReader与这个命令相关联,必须先关闭
- 12. 已经有一个打开的DataReader与此命令相关联,必须先关闭 - Foreach循环,如果语句
- 13. 我有一个错误消息。已经有与此命令相关联的打开的DataReader,必须首先
- 14. ASP.NET,SqlDataReader的和的SqlCommand(已经有一个用此命令,必须先关闭相关联的打开的DataReader)
- 15. 已经是一个开放的DataReader与这个命令相关联,必须先关闭
- 16. 与此连接关联的打开DataReader必须先关闭
- 17. A {“已经有一个与此命令关联的打开的DataReader,它必须先关闭。”}
- 18. 的EntityFramework已经有与此命令相关联的打开的DataReader,必须先关闭
- 19. 实体框架:已经有与此命令相关联的打开的DataReader,必须先关闭
- 20. 已经没有与此命令相关联的打开的DataReader,必须首先在C#中被关闭
- 21. 已经有一个与此命令关联的打开DataReader,它必须先关闭。为什么?
- 22. 已经有一个开放的DataReader与此连接相关联,必须先关闭
- 23. cshtml c#已经有一个开放的DataReader与此连接相关联,必须先关闭
- 24. 已经有一个与此命令相关的打开的DataReader,它必须先关闭linq
- 25. 已经有与此命令相关的开放的DataReader,必须先关闭在Nopcommerce
- 26. 解决错误:已经有一个用此命令相关联的打开的DataReader,必须首先
- 27. 这里是已与此命令相关联的打开的DataReader,必须先关闭
- 28. 已打开DataReader,必须先关闭
- 29. C#实体框架:已经有一个与此连接关联的开放DataReader,必须先关闭
- 30. MySql,Ninject和NHibernate - 已经有一个开放的DataReader与此连接关联,必须先关闭
在末尾处处理'dr'。 –