Java 来自sql的FamilyTree

Java 来自sql的FamilyTree,java,sql,ms-access,Java,Sql,Ms Access,我正试图从数据库中用Java创建familytree程序,我有两个类: 节点-具有getter和setter等。 Main-连接到DB,并在控制台中打印树。 我有问题: -我只建立了我的树的一个层次,我不知道如何建立其他层次 name | father -------+-------- moh | adam Ali | moh ammar | moh maraw | moh sabi | ammar Classe节点: public class Node {

我正试图从数据库中用Java创建familytree程序,我有两个类: 节点-具有getter和setter等。 Main-连接到DB,并在控制台中打印树。 我有问题: -我只建立了我的树的一个层次,我不知道如何建立其他层次

name   | father
-------+--------
moh    | adam 
Ali    | moh 
ammar  | moh 
maraw  | moh 
sabi   | ammar 
Classe节点:

public class Node {
            private String data;
            private Node parent;
            private List<Node> children;

嘿,请检查下面的代码

public void CreateTree()
{
        root = new Node("adam");
        AddChilds(root);
}


public void AddChilds(Node tree)
{
        String SQL="select name from BB where father='"+root.getData()+"' ;
        ResultSet rs = statement.executeQuery(SQL);
        while(rs.next())
        {
           Node child= new Node(rs.getString("name"));
           child.parent = tree;
           tree.addChild(child);//tree.children.Add(child);
        }
        tree.children.ForEach(X => { AddChilds(X); });
  }

是否需要使用关系数据库?这对于NoSQL数据库(即GraphDB,也可以表示树)来说是一项很好的工作。如果你需要使用关系数据库,你应该搜索如何表示分层数据。我正在使用access…你可以像examplethanck一样给出代码或sql请求吗?但是只打印根(“adam”)谢谢你…你的代码工作得很好..我更改了打印方法和sql中的一些错误。tree.getData()请不要将值连接到SQL字符串中。使用
PreparedStatement
root = new Node("adam");

String SQL="select name from BB where father='"+root.getData()+"' ;
      ResultSet rs = statement.executeQuery(SQL);
        while(rs.next())
        {
         child= new Node(rs.getString("name"));
        root.addChild(child);
     }
             Node.print(root);
public void CreateTree()
{
        root = new Node("adam");
        AddChilds(root);
}


public void AddChilds(Node tree)
{
        String SQL="select name from BB where father='"+root.getData()+"' ;
        ResultSet rs = statement.executeQuery(SQL);
        while(rs.next())
        {
           Node child= new Node(rs.getString("name"));
           child.parent = tree;
           tree.addChild(child);//tree.children.Add(child);
        }
        tree.children.ForEach(X => { AddChilds(X); });
  }