各位大哥帮小弟看一下这个代码

javabuilder9 2004-12-08 10:41:48
Sub Page_Load(sender As Object, e As EventArgs)
Dim Conn As OleDbConnection
Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0"
Dim Database = "Data Source=" & Server.MapPath( "admin/shop.mdb" )
Conn = New OleDbConnection( Provider & ";" & DataBase )

dim strSql1 = "select * from aclass "
Dim mycommand1 As oledbCommand = New oledbCommand(strSql1, conn)
Conn.Open()
Dim myReader1 As oledbDataReader = mycommand1.ExecuteReader(CommandBehavior.CloseConnection)
While myReader1.Read()
dim contact=contact & "<table><tr><td>" & myReader1.GetValue(1).ToString & "</td>"
dim strSql = "select bclassname from bclass where a1='" & myReader1.GetValue(1).ToString &"'"
Dim mycommand As oledbCommand = New oledbCommand(strSql, conn)

conn.Open()
Dim myReader As oledbDataReader = mycommand.ExecuteReader(CommandBehavior.CloseConnection)
While myReader.Read()
contact=contact & "<td>" & myReader.GetValue(1).ToString & "</td>"
End While
conn.Close()
contact=contact & "</tr></table>"
End While
conn.Close()



System.InvalidOperationException: 连接已经打开(state=Open, Fetching)。
...全文
139 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
javabuilder9 2004-12-08
  • 打赏
  • 举报
回复
我的问题还是没有解决啊 大家帮忙啊 都急死啦
javabuilder9 2004-12-08
  • 打赏
  • 举报
回复
如果把第二个conn。open去掉 就会报告InvalidOperationException: 已有打开的与此连接相关联的 DataReader,必须首先将它关闭。还是不行啊 那位大侠帮在下改一下代码啊

Overriding 2004-12-08
  • 打赏
  • 举报
回复
Dim myReader1 As oledbDataReader = mycommand1.ExecuteReader(CommandBehavior.CloseConnection

这句功能是调用reader.close会同时关闭connection,你程序并没有调用reader.close.
而且这个方法好像有争议。
Overriding 2004-12-08
  • 打赏
  • 举报
回复
你的代码里出现了两次conn.Open()
但是第二次打开前你没有关闭。所以会出现这个错误。
如果你关闭了你的代码功能不能实现。
就是只能一个reader和一个大开的connection关联。在asp.net2.0里可以实现两个reader用一个连接,但是必须书序执行,不能并发,而且需要用sqlserver2005.
chenyuming2004 2004-12-08
  • 打赏
  • 举报
回复
Conn.Open()
conn.Open()

连接在上面已经打开过了。
没关闭前就无须再次打开。
killerliu 2004-12-08
  • 打赏
  • 举报
回复
下面的conn.open去掉就可以了
因为你开始已经打开数据库连接,切没有关闭,所以会触发异常

要么你就在conn.open 的上面加上conn.close;conn.dispose
总之不要保持长连接就是了
jeffidea 2004-12-08
  • 打赏
  • 举报
回复
第2个conn.Open()没有必要
jsljy 2004-12-08
  • 打赏
  • 举报
回复
Conn.Open()打开了几次连接了
chenyuming2004 2004-12-08
  • 打赏
  • 举报
回复
Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0"
后面加个;号看看
Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
jeffidea 2004-12-08
  • 打赏
  • 举报
回复
Open去掉了,对应的Close也应该去掉的!

62,046

社区成员

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

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

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

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