页面上所有的datareader每次使用完都close的~但是如果按住F5不断刷新~会提示有未关闭的datareader~请问是怎么回事?是connection的关系吗?因为是用三层做的~datareader是逻辑层通过数据层返回~所以每次使用完都只是datareader.close()~而没有connection.close()不是说datareader.close()后.net会自动关闭connection的吗?

解决方案 »

  1.   

    try{
    DataReader reader = Command.ExecuteReader(CommandBehavior.CloseConnection);
    }
    catch{
        conn.Close();
    }这样才会关闭连接吧。
      

  2.   

    如果使用了连接类,
    在创建连接时候使用useing
    例如下面有一个连接Access的执行方法public static int ExecuteSql(string SQLString, params OleDbParameter[] cmdParms)
            {
                using (OleDbConnection connection = new OleDbConnection(connectionString))
                {
                    using (OleDbCommand cmd = new OleDbCommand())
                    {
                        try
                        {
                            PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                            int rows = cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                            return rows;
                        }
                        catch (System.Data.OleDb.OleDbException E)
                        {
                            throw new Exception(E.Message);
                        }
                    }
                }
            }
      

  3.   

    public static DataReader GetDataReader()
    {
      //关闭DataReader时关闭连接
      DataReader reader = Command.ExecuteReader(CommandBehavior.CloseConnection);  ...
      return reader;
    }调用方
    DataReader reader = GetDataReader();
    reader.Close();
      

  4.   

    不会自动关掉的,楼主要自己close
      

  5.   

    创建数据库连接的时候 请用using 会自动释放资源
    个人建议找找网上封装好的数据库操作类
    比如说动软的