要解决很简单。
在代码前面加上。
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();
在代码前面加上。
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();
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();
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#特有的方式噢,多学习学习!!!!
因为SqlDataReader 对象是动态与数据库连接的,所以一个连接只能打开一个SqlDataReader ,要打开多个记录集,建议采用Dataset。
to yuwen16(rr) 你的方法在对r1操作是会出错。
to suosuoyyy(羊羊)人家要求同时打开多个记录集,你把r1.Close()还玩什么呀。
这么写吧: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();
用dataset来处理好了。
你自己看着处理好了。