Hi
ich will mir eine Funktion schreiben, mit der ich meinen JTree rekursiv aus einer Oracle-Datenbank fülle
(es dürfte auch normal iterativ sein mir fällt jetzt aber nur eine rekursive Variante dazu ein)
Also, ich poste erst mal die Funktion und erläutere darunter mein Problem
Den ersten Knoten, die Wurzel erhält die Funktion 'insertNode2' schon in 'main()'
Aussehen der DB:
Die Datensätze in der DB haben folgendes Format: ID (genauer Bezeichner), ordner_parent_fk ( Vater bzw. Überordner), Bezeichnung (Name)
Meine Idee war, den Baum Hierarchieweise einzulesen.
Die Wurzel ist ja schon vorhanden... insertNode2 würde dann die ersten beiden Hierarchieebenen einlesen.
In der letzten while-Schleife wollte ich dann die Rekursikon starten und die Funktion mit einer neuen Wurzel, also dem Knoten der die untergeordneten Hierarchien erhalten soll, aufrufen. Mein Ansatz hier oben liefert mir allerdings eine Endlosschleife und ich kann mir nicht erklären warum.
Vielleicht weiß ja jemand wo der Fehler bei mir liegt und wenn es ganz gut läuft vielleicht sogar noch einen Tipp auf einen Lösungsvorschlag
Gruß
Kalle!!!
ich will mir eine Funktion schreiben, mit der ich meinen JTree rekursiv aus einer Oracle-Datenbank fülle
(es dürfte auch normal iterativ sein mir fällt jetzt aber nur eine rekursive Variante dazu ein)
Also, ich poste erst mal die Funktion und erläutere darunter mein Problem
Code:
public void insertNode2(String session) throws SQLException
{
if (con == null)
return;
Statement stmt = con.createStatement();
ResultSet rs;
rs= stmt.executeQuery("Select * from ordner o " + "where o.ordner_parent_fk = "+ session );
while (rs != null && rs.next())
/* hier wird der Baum mit den übergeordneten Hierachien gefüllt */
{
insertNode(new CTreeNode(rs.getInt("id"),rs.getInt("ordner_parent_fk"), rs.getString("bezeichnung")) ,(CTreeNode)this.getRoot());
/* insertNode fügt den Knoten in den Baum ein insertNode(neuer Knoten, Vater) */
}
System.out.println("childCount: " + ((CTreeNode)this.getRoot()).getChildCount());
for (int c = 0; c <((CTreeNode)this.getRoot()).getChildCount(); c++)
/*Hier werden die niedrigere Hierachie an die Knoten angehängt*/
{
CTreeNode parent = (CTreeNode)((CTreeNode)this.getRoot()).getChildAt(c);
rs = stmt.executeQuery("Select * from ordner o " + "where o.ordner_parent_fk = " + parent.getID());
while (rs != null && rs.next())
{
CTreeNode newNode = new CTreeNode(rs.getInt("id"), rs.getInt("ordner_parent_fk"), rs.getString("bezeichnung"));
insertNode2(rs.getString("id")); // Hier ist die Rekursion die nicht funktioniert
insertNode(newNode, parent);
}// ende while
}// ende for
} // ende fkt
Aussehen der DB:
Die Datensätze in der DB haben folgendes Format: ID (genauer Bezeichner), ordner_parent_fk ( Vater bzw. Überordner), Bezeichnung (Name)
Meine Idee war, den Baum Hierarchieweise einzulesen.
Die Wurzel ist ja schon vorhanden... insertNode2 würde dann die ersten beiden Hierarchieebenen einlesen.
In der letzten while-Schleife wollte ich dann die Rekursikon starten und die Funktion mit einer neuen Wurzel, also dem Knoten der die untergeordneten Hierarchien erhalten soll, aufrufen. Mein Ansatz hier oben liefert mir allerdings eine Endlosschleife und ich kann mir nicht erklären warum.
Vielleicht weiß ja jemand wo der Fehler bei mir liegt und wenn es ganz gut läuft vielleicht sogar noch einen Tipp auf einen Lösungsvorschlag
Gruß
Kalle!!!