请教怎么样创建一个SqlDataReader 的列表,其中包括内容相同的多个SqlDataReader 对象,而使它们互不影响。
我想创建一个SqlDataReader 的List列表,然后重复读取里面的每个SqlDataReader 的数据
但是用了下面的代码感觉只是引用而已,而不是创建一个真实的对象
对了一个SqlDataReader 进行操作后
其它的SqlDataReader 就也被操作过一样的。
 
SqlDataReader Dr = dbClass.ExecuteReaderReturnDr(strSql);
            SqlDataReader Dr2 = dbClass2.ExecuteReaderReturnDr(strSql);
            List <SqlDataReader> drList= new List<SqlDataReader>();
            if (Dr.HasRows)
            {
                while (Dr.Read())
                {
                    drList.Add(Dr2);
                }
            }

解决方案 »

  1.   

    datareader必须存在跟数据库一条显式的链接...他跟dataset和datatable这些内存数据巢不同...
      

  2.   

    一个DataReader与一个Connection对象,
    要创建多个DataReader,就要有多个Connection
    我们知道.NET中有数据库连接池,当连接池中没有连接的时候,就会等待,而客户端往往看到超时的页面。楼主的需求:我想创建一个SqlDataReader   的List列表,然后重复读取里面的每个SqlDataReader   的数据 
    ==>
    就是要重复使用数据,减少多次读数据库。那么可以把数据一次读出来放到缓存里,然后访问缓存就可以了。
      

  3.   

    请教怎么样创建一个SqlDataReader   的列表,其中包括内容相同的多个SqlDataReader   对象,而使它们互不影响。 
    我想创建一个SqlDataReader   的List列表,然后重复读取里面的每个SqlDataReader   的数据 
    但是用了下面的代码感觉只是引用而已,而不是创建一个真实的对象 
    对了一个SqlDataReader   进行操作后 
    其它的SqlDataReader   就也被操作过一样的。 
    SqlDataReader Dr = dbClass.ExecuteReaderReturnDr(strSql);
                SqlDataReader Dr2 = dbClass2.ExecuteReaderReturnDr(strSql);
                List <SqlDataReader> drList= new List<SqlDataReader>();
                if (Dr.HasRows)
                {
                    while (Dr.Read())
                    {
                        drList.Add(Dr2);
                    }
                }