SqlDataReader类型赋值,SqlDataReader的两个实例readerA、readerB,如何将readerA的值赋给另一个readerB?
我遇到的情况是这样的:一个函数A()返回值类型为SqlDataReader,我在另一个函数B()里调用函数A():SqlDataReader A()
{
    conn.Open();
    SqlCommand cmd = new SqlCommand(strSql, conn);
    SqlDataReader reader = cmd.ExecuteReader();
    conn.Close();
    return reader;
}
void B()
{
    SqlDataReader reader=A();
    while (reader.Read())    //这里抛出异常:“阅读器关闭时Read的尝试无效。”
    {}
}请教各位,有什么办法可以解决这个问题?

解决方案 »

  1.   

    SqlDataReader A()
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand(strSql, conn);
        SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        return reader;
    }
    void B()
    {
        SqlDataReader reader=A();
        while (reader.Read())    //这里抛出异常:“阅读器关闭时Read的尝试无效。”
        {}
       reader.Close();
    }
      

  2.   


    SqlDataReader A() 

        conn.Open(); 
        SqlCommand cmd = new SqlCommand(strSql, conn); 
        SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
        return reader; 

    void B() 

        SqlDataReader reader=A(); 
        while (reader.Read())    //这里抛出异常:“阅读器关闭时Read的尝试无效。” 
        {} 
      reader.Close(); 

      

  3.   

    连接已经关了把前面的close()删除了你用完了再关3楼的代码正解
      

  4.   

    这是不是意味着当reader.Close()的时候,conn会自动Close?
      

  5.   

    cmd.ExecuteReader(CommandBehavior.CloseConnection);
    在执行该命令时,如果关闭关联的 DataReader 对象,则关联的 Connection 对象也将关闭
    这样你关闭dataReader是conn也就跟着关闭了
    转自:http://www.wearelearn.net/asp_net.html