JTree mit Datenbank aufbauen

B

BlaBlub123

Hi,

versuche zur Zeit einen JTree mit Daten aus einer Datenbank zu füttern. Die Tabelle hat Positionen mit fortlaufender Nummer, eine Ebenenzuweisung und eine Spalte, in der angegeben wird, zu welcher laufenden Nummer sie gehört, sprich welche Kinder zu welchem Vater gehören.

Tabelle:

Nr______Ebene_____zuNr_____
1_______1_________1_______
2_______2_________1_______
3_______3_________2_______
4_______4_________3_______
5_______3_________2_______
6_______4_________5_______

Baum:

1
__2
____3
______4
____5
______6


Ich hoffe, so ist das verständlich. Allerdings muss dazu gesagt werden, dass ein JTree gewünscht ist, der alle Tabelle mit dieser Struktur darstellen kann.. also auch wesentlich komplexere.

Meine bisherigen Versuche da etwas mit DefaulMutableTreeNode zu bauen schlugen fehl - verständlicherweise. Ich bin der Meinung hier muss ein CTreeNode ran um Childs und Parents zuzuordnen.

Es wäre super, wenn sich jemand die Mühe machen würde, hier mal ein kleines Beispiel anzufertigen.

Danke & Gruß
 
Soweit ich weiß bleibt dir da nichts anderes übrig als den Baum selbst wieder zu rekonstruieren.

Grundsätzlich würd ich nicht eine Datenbank für sowas nutzen, da bietet sich XML aufgrund der DOM-Baumstruktur ja schon an.
 
Danke für deinen Beitrag...

Nachdem, was ich gelesen habe, bedarf es hier an einer rekursiven Methode, welche dafür sorgt, dass die Unterordner dem jeweiligen Überordner zugeordnet werden.

Die Hierachiebezeichnungen sind doch relativ einleuchtend, wozu jedes mal eine XML-Datei erzeugen? Das nutzen der XML Variante wird wohl nicht mein Problem des rekursiven Methodenaufrufs lösen.
 
Nein, dass nicht. Aber beim DOM bekommst du schon einen Baum, den müsstest du dir in SQL erst laden.
Wozu benötigt deine Datenbank überhaupt die Spalte Ebene? Jedes Element muss doch eh eine Ebene unter seinem Vater hängen.
 
Ich glaube auf XML zu schwanken bringt mich nicht weiter, da dort keine bzw geringe Kenntnisse vorliegen.

Die Tabelle ist noch um einiges ausführlicher. Die drei genannten Spalten waren für mich die relevanten zum Aufbau des Baumes. Natürlich kann man die Spalte "Ebene" auch einfach ignorieren, kann ja sein, dass sie jemand verwenden könnte.
 
Pseudocode für Datenbank:

Code:
Erstelle RootNode;
SQL: Finde alle Zeilen wo zuNr = Nr;

für alle Zeilen:
  Erstelle Node für Zeile;
  Node = AppendChildren(Node);
  Füge Node zu RootNode hinzu;

Code:
funktion AppendChildren(Node)
  SQL: Finde alle Zeilen wo zuNr = Node.Nr;

  für jede Zeile
    Erstelle thisNode für Zeile;
    thisNode  = AppendChildren(thisNode);
    Füge thisNode zu Node hinzu;

Ich empfehle aber nochmal die XML Lösung, da du hier unmengen an SQL-Abfragen brauchst.
 
Danke schonmal soweit.

Ich habe mir die XML Geschichte mal angeschaut... Kannst du mir vielleicht bei der Erstellung der XML Datei auf Grundlage des Beispiels weiterhelfen? Wichtig ist hier ja, dass der Baum eine zunächst unbekannt Größe bzw. Anzahl an Ebenen besitzt, sprich die XML Datei dynamisch erzeugt werden muss.

Kann der JTree denn dann einfach mit dem DOM gefüttert werden?
 
Nein kann er nicht, aber du müsstest nicht zig SQL-Anfragen schicken.

Bsp. für eine XML-Datei zu deinem Baum.
Code:
<rootNode>
  <Node name="Knoten 1">
    <Node name="Knoten 2">
      <Node name="Knoten 3">
        <Node name="Knoten 4"></Node>
      </Node>
    <Node name="Knoten 5">
      <Node name="Knoten 6"></Node>
    </Node>
  </Node>
</rootNode>

Du kannst dann unter jeden Node einfach wieder beliebig viele Nodes anhängen.
 
Dann habe ich einen statischen Baum in einer XML Datei. Ich versteh nicht ganz, wo mich das weiterbringt?

Nochmal: Die Daten sind nie die gleichen, der Baum soll sich jedesmal anhand der Struktur selbst aufbauen.

Die Anzahl der SQL Abfragen halte ich auch nicht für besonders relevant, da sie ja in einer relativ kleinen Tabelle geschehen und weniger komplex sind.
 

Neue Beiträge

Zurück