呵呵 SqlDataReader dr = DB.GetDataReader("select * from FolderList where FatherID='"+ parentNode.FolderID +"'"); while(dr.Read()) { ... SqlDataReader dr1= DB.GetDataReader("select * from List where FatherID='"+ ID +"'") ... }好像是上面dr没释放,就不能用GetDataReader读取另一个dr1,应该怎么解决啊
知道你的意思,你是从一张表中查出ID,然后再根据ID去关联其他表的信息,你这样会用到2个SqlDataReader dr ,在第一个SqlDataReader 没关闭之前,你又去用另外一个SqlDataReader dr1,这样是不对的,其实你可以用一句SQL来完成你这2个动作
SqlDataReader dr = DB.GetDataReader("select * from FolderList where FatherID='"+ parentNode.FolderID +"'");
while(dr.Read())
{
...
SqlDataReader dr1= DB.GetDataReader("select * from List where FatherID='"+ ID +"'")
...
}好像是上面dr没释放,就不能用GetDataReader读取另一个dr1,应该怎么解决啊
知道你的意思,你是从一张表中查出ID,然后再根据ID去关联其他表的信息,你这样会用到2个SqlDataReader dr ,在第一个SqlDataReader 没关闭之前,你又去用另外一个SqlDataReader dr1,这样是不对的,其实你可以用一句SQL来完成你这2个动作
通过SQL是可以但是如果复杂的,必须用多个reader的情况下,该怎么处理呢
或者把第一个reader的结果先保存到一个集合里,关闭第一个reader之后再遍历这个集合访问第二个reader
private SqlDataReader dataReader = null;
public static SqlDataReader GetDataReader(string StrCmd)
{
Open();
SqlCommand cmd = new SqlCommand(StrCmd, Con);
if(dataReader!=null) dataReader.Close();
dataReader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
return dataReader;
}