本帖最后由 qq_20871509 于 2014-09-16 20:52:34 编辑

解决方案 »

  1.   

    String str;
    // level: 打印时用来缩进的,美化打印效果。孩子结点比父结点多一个----
    private void tree(Connection conn,int id,int level){
      Statement stmt=null;
      ResultSet rs=null;
      String preStr="";
      for(int i=0;i<level;i++)
      {
       preStr +="----";
      }
      try
      {
          stmt=conn.createStatement();
          String sql="select * from  article where pid="+id; // SQL 查找父结点的pid为传进来的id
          rs=stmt.executeQuery(sql); // 执行SQL
          while(rs.next())
          {
            // 输出查到的结果
           str+="<tr><td>"+rs.getInt("id")+"</td><td>"+preStr+
           rs.getString("title")+"</td></tr>"; 
           if(rs.getInt("isleaf")!=0) // 如果查到的记录不是叶结点,即有孩子结点,继续查询
           {
           tree(conn,rs.getInt("id"),level+1); // 当前记录的id作为pid,查找它的孩子结点
           }   
      }
      

  2.   

    看懂楼上的解释后,自己尝试改造下, 可以改为单句sql查出所有集合
      

  3.   

    能在详细说明下吗 这是我的数据库 
    前面到pid等于2的时候 id 3 和 id4 pid都是2 他下面怎么执行?先执行id3?还是同时? 然后 往下面到id等于5的时候 找不到pid等于5的 又怎么执行?
      

  4.   

    还有一开始传入的是id=1,level=1