解决方法:两个DataReader用不同的SqlConnection。
注意:DataReader依托于SqlConnection,如果SqlConnection关闭了,DataReader也就自动消亡了~
//SqlCommand对象可以不需建立两个!
SqlConnection conn = new SqlConnection("server=(local);uid=sa;pwd=sa;database=Northwind;");
SqlCommand cmd = new SqlCommand("Select top 10 * From Table1", conn);
conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
SqlConnection conn2 = new SqlConnection("server=(local);uid=sa;pwd=sa;database=Northwind;");
SqlCommand cmd2 = new SqlCommand("Select top 2 * From Table1 Where ID>" + Convert.ToString(sdr["id"]), conn2);
conn2.Open();
SqlDataReader sdr2 = cmd2.ExecuteReader();
while (sdr2.Read())
{
Response.Write(sdr2["age"] + "<br/>");
}
sdr2.Close();
conn2.Close();
}
sdr.Close();
conn.Close();在使用 SqlDataReader 时,关联的 SqlConnection 正忙于为 SqlDataReader 服务,对 SqlConnection 无法执行任何其他操作,只能将其关闭。除非调用 SqlDataReader 的 Close 方法,否则会一直处于此状态。例如,在调用 Close 之前,无法检索输出参数。(摘自MSDN)
评论(0)
暂无评论。