要解决很简单。
在代码前面加上。
SqlConnection c = new SqlConnection(...);
SqlDataAdapter a = new SqlDataAdapter("select a from a", c)
SqlDataReader r1 = a.SelectCommand.ExecuteReader();
if (c.State == "Open")
{
   c.State = "Closed"
}
a.SelectCommand.CommandText = "select b from b";
SqlDataReader r2 = a.SelectCommand.ExecuteReader();

解决方案 »

  1.   

    将你用的两条SQL语句合并成一条执行
      

  2.   

    SqlConnection c = new SqlConnection(...);
    SqlDataAdapter a = new SqlDataAdapter("select a from a", c)
    c.Open();
    SqlDataReader r1 = a.SelectCommand.ExecuteReader();
      ;
      ;
    r1.Close();
    a.SelectCommand.CommandText = "select b from b";
    SqlDataReader r2 = a.SelectCommand.ExecuteReader();
      ;
      ;
    r2.Close();
    c.Close();
      

  3.   

    SqlConnection c = new SqlConnection(...);
    SqlDataAdapter a = new SqlDataAdapter("select a from a;select b from b", c)
    SqlDataReader r1 = a.SelectCommand.ExecuteReader();
    while(r1.read())
    {
      //进行A表的操作
      r1.NextResult(); //代表了下一个表B的记录集合
    }
    是不是很方便啊!!!^_^
    这是C#特有的方式噢,多学习学习!!!!
      

  4.   


    因为SqlDataReader 对象是动态与数据库连接的,所以一个连接只能打开一个SqlDataReader ,要打开多个记录集,建议采用Dataset。
    to  yuwen16(rr) 你的方法在对r1操作是会出错。
    to suosuoyyy(羊羊)人家要求同时打开多个记录集,你把r1.Close()还玩什么呀。
      

  5.   

    sorry!
    这么写吧:SqlConnection c = new SqlConnection("........")
    SqlDataAdapter a = new SqlDataAdapter("select * from a", c);
    c.Open();
    SqlDataReader r1 = a.SelectCommand.ExecuteReader();
             while (r1.Read())
             {
    Console.Write(r1[0]);//处理r1代码
    }
             r1.Close(); if (c.State.ToString() == "Open")
    {
     c.Close();
    }
    a.SelectCommand.CommandText = "select * from b";
    c.Open();
    SqlDataReader r2 = a.SelectCommand.ExecuteReader();
             while (r2.Read())
             {
    Console.Write(r2[0]);//处理r2代码
    }
             r2.Close();
      

  6.   

    这些只能是分别打开。如果需要同时打开,确实和CMIC(大象) ( ) 所说的一样。。
    用dataset来处理好了。
    你自己看着处理好了。
      

  7.   

    To 能否打开多个记录集?你可以用SqlDataAdapter+DataSet来进行。