DBHelp DB = new DBHelp();
    protected void Page_Load(object sender, EventArgs e)
    {
      
        string sqlStr=DB.GetSqlStr("select", "base_class", "id,name", "", "", "sortnum asc");
        DataSet DS_Parent=DB.GetDate(sqlStr);
        DB.clear();
        for (int i = 0; i < DS_Parent.Tables[0].Rows.Count; i++) {
            Response.Write(DS_Parent.Tables[0].Rows[i]["name"]);
            showSecondMenu(2);
        }
       
     
    }
    public void showSecondMenu(int parentId){
           string sqlStr1 = DB.GetSqlStr("select", "second_class", "id,name", "", "", "sortnum asc");
           DataSet DS_Second = DB.GetDate(sqlStr1);
           for (int i = 0; i < DS_Second.Tables[0].Rows.Count; i++)
           {
               Response.Write(DS_Second.Tables[0].Rows[i]["name"]);           }
           DS_Second.Dispose();
    }
高手帮我看下这句: showSecondMenu(2);
如果把这句放在循环外边,就能正常运行,而放到循环里,就无法打开(其实是打开很慢。超慢,慢到看不到结果)。主要原因不是死循环,在这个地方 DataSet DS_Second = DB.GetDate(sqlStr1);
,大家帮我看下,谢谢大家。

解决方案 »

  1.   

    你的int parentId这个参数没见用呀??
    你构造出来的SQL语句是什么样的?
    你这应该是先取一级菜单,再根据一级菜单ID取它下面的二级菜单,但没看到你ShowSecondMenu里用到一级菜单的ID或什么,直接是每次都全取呀。。
      

  2.   

    是不是数据量太大?并且你的id好像都没传到sql中去
      

  3.   

    dataset这个好用吗?我比较喜欢用实体类.
      

  4.   

    感谢大家的回复。
    怪我没仔细说明我的程序。
    第一:showSecondMenu方法里的参数我是随便定的用来测试,没有实际意义。正如二楼指正的这样,没有根据指定一级分类下的二级分类。
    第二:就是我的二级分类:second_class表里只有2条数据,所以应该不是数据量太大的问题,感谢三楼提醒了。
    第三:就是我的db里面对数据库的操作只有两个,一个就是这个传回数据用的DataSet,还有个就是执行Sql语句的方法。对于四楼说的死锁,我还不懂,希望您帮我详细讲解下,感谢。
    第四:我一般都喜欢用DataSet来读取数据库,不知道和DataReader比较那个更好些。由于中午有事,我这个回复有点晚,大家见谅,再次感谢大家的回复。谢谢。
      

  5.   

    那你取DataSet的方法是怎么样的,,如果只有两条数据的话不应该会出现这样的情况呀!~~
    还有你的Base_Class表是不是有过多的条目??
      

  6.   


     第四:我一般都喜欢用DataSet来读取数据库,不知道和DataReader比较那个更好些。 DataSet可以从数据库表中取得数据,然后就可以断开了与数据库的连接,而DataReader必须去数据以及显示都必须要跟数据库保持时时的连接。
      

  7.   

    #9楼
    我的DataSet方法就是基本DataSet数据读取,打开连接,配置CMD这样的。然后return这个DS。我的base_class里的数据也很少。#10楼
    那是不是关于dataset和datareader的内存回收包括cn的close都该写在一个方法里(比如clear()),在每次通过这个方法获得数据后,然后就马上利用clear()来清除。
      

  8.   

    string sqlStr=DB.GetSqlStr("select", "base_class", "id,name", "", "", "sortnumasc");
       有没有试过sql语句写死试试了..
             如果还是一样的,那就