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)。

解决方案 »

  1.   

    Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0"
    后面加个;号看看
    Dim Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
      

  2.   

    下面的conn.open去掉就可以了
    因为你开始已经打开数据库连接,切没有关闭,所以会触发异常要么你就在conn.open 的上面加上conn.close;conn.dispose
    总之不要保持长连接就是了
      

  3.   

    Conn.Open()
    conn.Open()连接在上面已经打开过了。
    没关闭前就无须再次打开。
      

  4.   

    你的代码里出现了两次conn.Open()
    但是第二次打开前你没有关闭。所以会出现这个错误。
    如果你关闭了你的代码功能不能实现。
    就是只能一个reader和一个大开的connection关联。在asp.net2.0里可以实现两个reader用一个连接,但是必须书序执行,不能并发,而且需要用sqlserver2005.
      

  5.   

    Dim myReader1 As oledbDataReader = mycommand1.ExecuteReader(CommandBehavior.CloseConnection这句功能是调用reader.close会同时关闭connection,你程序并没有调用reader.close.
    而且这个方法好像有争议。
      

  6.   

    如果把第二个conn。open去掉  就会报告InvalidOperationException: 已有打开的与此连接相关联的 DataReader,必须首先将它关闭。还是不行啊 那位大侠帮在下改一下代码啊
      

  7.   

    Open去掉了,对应的Close也应该去掉的!