public static OleDbDataReader GetReader(string sql)
    {
        try
        {
            OleDbConnection conn = AccessSet();
            if (conn.State == ConnectionState.Closed)
            { conn.Open(); }            OleDbCommand cmd = new OleDbCommand(sql, conn);
            return cmd.ExecuteReader();
        }
        catch (SqlException e)
        {
            throw new Exception(e.Message);
        }
    }在a.aspx.cs中用三个地方调用这个方法,返回的OleDbDataReader 在a.aspx页中循环显示数据
在循环时有使用到using关键字。现在的问题是按住F5让它持续的刷新,页面就会出错。在conn.Open();这行请教大家,还有别的方法能防止这错误的发生吗

解决方案 »

  1.   

    关闭OleDbConnection 的方法  就直接写在这个方法里面
      

  2.   

    不知你的conn.close()要写在哪个位置
    我用下面的方法出错:OleDbConnection conn = AccessSet();
            OleDbDataReader odr = null;
            try
            {
                if (conn.State == ConnectionState.Closed)
                { conn.Open(); }            OleDbCommand cmd = new OleDbCommand(sql, conn);
                odr = cmd.ExecuteReader();
                conn.Close();
                return odr;
            }
            catch (SqlException e)
            {
                throw new Exception(e.Message);
            }
            finally
            {        }
      

  3.   


                conn.Open(); 
                OleDbCommand cmd = new OleDbCommand(sql, conn);
                odr = cmd.ExecuteReader();
                conn.Close();
                return odr;
      

  4.   

    ...你关闭了连接,odr也就关闭了
      

  5.   

    OleDbDataReader 在读的过程中是不能关闭连接的。关闭连接要放在页面的后台代码进行关闭。
      

  6.   

    你做的什么功能啊?
    非得返回OleDbDataReader ?
    OleDbDataReader  用完后也是要关闭的。
      

  7.   


    这代码用不了,提示尝试读取已经关闭的odr。
    odr读取的速度比dt和ds的快,而且网站也已经写好,就差这个问题了在页面上已经有用进行关闭了,现在人数一多或一直按住F5就会出错
    using(odr)
    {
    while(odr.read())
    {}
    }
      

  8.   

    a.aspx.cs  面页调用完  OleDbDataReader后记录 把 reader Close掉,应该就没问题了。
      

  9.   


    //a.aspx.cs页
    NewsRmd = db.GetReader("");//a.aspx页
    <%
        using(NewsRmd)
    {
        if (NewsRmd.Read())
        { 
         %>
    <dl>
    <dd><a href="<%=NewsRmd["autoid"] %>.htm>"><%=NewsRmd["tablename"] %></dd>
    </dl>
    <%
        }    
    }
     %>
    这是我在a.aspx页使用的情况,已经调用using进行关闭,现在的情况是你频繁的刷新页面就会出错
      

  10.   

    另外我不知道是不是因为Access数据库的原因,类似的代码在SQL 2005上没出现这情况
      

  11.   

    出错原因就是datareader没有关闭,你的datareader返回到哪里 就在那里关闭。
      

  12.   



    我已经在调用返回的页面(a.aspx)中使用using语句关闭了