public static SqlDataReader GetDataReader(string StrCmd)
{
Open();
SqlCommand cmd = new SqlCommand(StrCmd, Con);
SqlDataReader dataReader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
return dataReader;
}

解决方案 »

  1.   

    呵呵
    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,应该怎么解决啊
      

  2.   


    知道你的意思,你是从一张表中查出ID,然后再根据ID去关联其他表的信息,你这样会用到2个SqlDataReader dr ,在第一个SqlDataReader 没关闭之前,你又去用另外一个SqlDataReader dr1,这样是不对的,其实你可以用一句SQL来完成你这2个动作
      

  3.   


    通过SQL是可以但是如果复杂的,必须用多个reader的情况下,该怎么处理呢
      

  4.   

    一个办法是每次生成新的Connection而不是用同一个,不过可能和设计有冲突
    或者把第一个reader的结果先保存到一个集合里,关闭第一个reader之后再遍历这个集合访问第二个reader
      

  5.   

    try this?
    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;
    }