执行SqlCmd.ExecuteNonQuery()时出错,求救

cansum396 2003-09-18 09:31:20
Dim Objconn As New SqlClient.SqlConnection()
Objconn = Session("objconn")
If Objconn.State = ConnectionState.Closed Then Objconn.Open()
Dim SqlCmd As New SqlClient.SqlCommand("GetSiInfor", Objconn)
SqlCmd.CommandType = CommandType.StoredProcedure
Dim Paraml As New SqlClient.SqlParameter()
With Paraml
.ParameterName = "@SINO"
.SqlDbType = SqlDbType.Int
.Direction = ParameterDirection.Input
End With
Dim Paraml1 As New SqlClient.SqlParameter()
With Paraml1
.ParameterName = "@AMOUNT"
.SqlDbType = SqlDbType.Money
.Direction = ParameterDirection.Output
End With
Dim Paraml2 As New SqlClient.SqlParameter()
With Paraml2
.ParameterName = "@SALES"
.SqlDbType = SqlDbType.VarChar
.Size = 50
.Direction = ParameterDirection.Output
End With
With SqlCmd.Parameters
.Add(Paraml)
.Add(Paraml1)
.Add(Paraml2)
End With
SqlCmd.Parameters("@SINO").Value = TextBox2.Text
SqlCmd.ExecuteNonQuery()
Dim sqlReader As SqlClient.SqlDataReader

当执行到SqlCmd.ExecuteNonQuery()时出现错误:
已有打开的与此连接相关联的 DataReader,必须首先将它关闭。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 已有打开的与此连接相关联的 DataReader,必须首先将它关闭。
...全文
257 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
timmy3310 2003-09-18
  • 打赏
  • 举报
回复
你在Session里面保存连接对象的做法是不可取的,保存连接字符串,每次重新创建连接对象才是正确做法

问题出在你别的地方也使用了Session里面的这个连接,并且使用完毕之后没有关闭
timmy3310 2003-09-18
  • 打赏
  • 举报
回复
你在Session里面保存连接对象的做法是不可取的,保存连接字符串,每次重新创建连接对象才是正确做法

问题出在你别的地方也使用了Session里面的这个连接,并且使用完毕之后没有关闭
xavier_lee 2003-09-18
  • 打赏
  • 举报
回复
Objconn = Session("objconn")
应该为
Objconn = ctype(Session("objconn"),sqlclient.sqlconnection)
timmy3310 2003-09-18
  • 打赏
  • 举报
回复
不要把连接对象放到Session里面,把连接字符串放到Application对象里面,如:

Application.Add("connectionStr","连接字符串")

然后把:
Dim Objconn As New SqlClient.SqlConnection()
Objconn = Session("objconn")
改为:
Dim Objconn As New SqlClient.SqlConnection( Application("connectionStr") )
sweet12345 2003-09-18
  • 打赏
  • 举报
回复
你是不是在这之前用过一个datareader?你可以在使用完之后,立即关闭dataReader对象,就可以了。因为他们是互斥的访问数据库的。
cansum396 2003-09-18
  • 打赏
  • 举报
回复
上面是全面的代码了
没有发现有重复打开的现象
guoyan19811021 2003-09-18
  • 打赏
  • 举报
回复
SqlCmd.ExecuteNonQuery()
时,连接重复打开
icyer 2003-09-18
  • 打赏
  • 举报
回复
意思是说,已经存在了一个打开的SqlDataReader,应该先关闭这个SqlDataReader,然后才能用connection去执行Command
请检查你其他代码,有没有用了SqlDataReader而没有关闭的

62,253

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧