我今天在做递归的时候 发现出现这样的错误 
“ 完成执行语句前已用完最大递归 100”
报错的地方时是
SqlDataReader Dr = DBHelp.GetReaderParm(Sql.ToString().Trim(), InValues);
        
        while (Dr.Read())
        {
            list.Add(new { Name = Dr["CategoriesName"].ToString(), ID = Dr["CategoriesID"].ToString() });
        } 
原本换成datatable之类的算了,但是觉得datatble之类的读取性能始终比不上进datareader  所以比较不甘心的来问问是不是 while (Dr.Read())有读取次数限制还是怎么回事?如何如何解决呢???麻烦各位大哥解决一下 谢谢了

解决方案 »

  1.   

    啊 能具体点吗?
    我里面的方法是这样的 
    public static SqlDataReader GetReaderParm(string sql, params SqlParameter[] values)
            {
                SqlCommand cmd = new SqlCommand(sql, Connection);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddRange(values);
                SqlDataReader reader = cmd.ExecuteReader();
                return reader;
            }
    有什么问题吗
      

  2.   

    不要用递归的时候用SQLDATAREADER,用dataset
      

  3.   

    一个SqlDataReader 没有关闭,允许你继续打开一个SqlDataReader ?我以前做的时候是不可以的,SqlDataReader 是只进流,数据是临时读取的,最好是关闭一个SqlDataReader 再执行另一个SqlDataReader 。考虑到你用递归去查询数据库,个人建议你还是用存储过程做吧。