我的表结构:
id,classname,parentid数据

1,北京,0
2,天津,0
3,上海,0
4,朝阳区,1
5,南开区,2
6,朝阳区-1,4
7,南开区-1,5
我用递归的方法来输出数据库的内容,可是
当执行了下面的程序后,输出结果为北京
朝阳区
朝阳区-1其他的都输不出来,也就是同一级别的循环只得到第一个分类package com;
import java.sql.*;
import java.util.Vector;public class DB {
Connection connection;
    Statement stmt2;
    ResultSet rs2; Vector v=new Vector();
String driverName="com.mysql.jdbc.Driver";
  //数据库用户名
String userName="root";
  //密码
String userPasswd="123456";
  //数据库名
String dbName="hui_wxj";
String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;public void setConnection() throws Exception  //建立数据库连接
{

  Class.forName("com.mysql.jdbc.Driver").newInstance();
  connection=DriverManager.getConnection(url);
  stmt2=connection.createStatement();   
  
}
public void digui(int parentid) throws Exception //递归输出数据库的内容{
setConnection();
String sql2="select * from hui_sort where parentid="+parentid;
rs2=stmt2.executeQuery(sql2);while(rs2.next())
{
    System.out.println(rs2.getString(2));
System.out.println(rs2);
    digui(rs2.getInt(1));
}
}
public static void main(String[] args) throws Exception {
DB db=new DB();
db.digui(0); //0是根目录

}}请各位高手指点一二!

解决方案 »

  1.   

    当然是这个结果了
    setConnection();
    String sql2="select * from hui_sort";
    rs2=stmt2.executeQuery(sql2);while(rs2.next())
    {
        System.out.println(rs2.getString(2));
        
    这样不就行了
      

  2.   

    要按类别依次排序,修改下sql语句就好了。String sql2="select * from hui_sort order by parentid";
      

  3.   

    1,北京,0
    北京后是null还是''?
      

  4.   

    应该是你的rs2的问题。 
    ResultSet rs2; 声明放在digui方法里 再试试!
      

  5.   

    当生成 ResultSet 对象的 Statement 对象关闭、重新执行或用来从多个结果的序列检索下一个结果时,ResultSet 对象会自动关闭。
      

  6.   

    谢谢。。wdaogang
    那我的就没法实现了么?
      

  7.   

    ...
                       ResultSet rs=stmt.executeQuery("select * from hui_sort");
                       link=new   MyLink(null,null); 
     while(rs.next()){
      link.index=rs.getString(1);
      link.value=rs.getString(2);
      link.key=rs.getString(3);
      link=new MyLink(link,null);
     }
     reverse();
     digui(0);
    }
    private static void reverse(){
                      while(link.hasPreious())
    link=link.preious;
    }
    static MyLink link;
    public static void digui(int parentid){
    while(link.hasNext()){
        System.out.println(link.value);
        digui(Integer.parseInt(link.index));
    }
    }
    }
    public class MyLink{
    MyLink preious;
    MyLink next;
    String index;
    String key;
    String value;
    public MyLink(MyLink preious,MyLink next){
    this.next=next;
    this.preious=preious;
    }
    public boolean hasNext(){
    if(next!=null){
    return true;
    }else{
    return false;
    }
    }
    public boolean hasPreious(){
    if(preious!=null){
    return true;
    }else{
    return false;
    }
    }
    }