Master/Detail Tabellen mit JDBC und Swing

ICanHasNick

Mitglied
Hallo,

wie würdet Ihr eine kleine Anwendung in J2SE realisieren, die Daten aus zwei verschiedenen Datenbank-Tabellen (z.B. Länder und Städte) in zwei JTables visualisiert und diese als Master/Detail Ansicht miteinander verknüpft.
Also ganz simpel, beim Klick auf eine Tabellenzeile in der Länder-Tabelle sollen nur Städte des betreffenden Landes in der Städte-Tabelle gezeigt werden.

Keine IDE, keine Frameworks, keine Beans oder Fremdbibliotheken.
Nur JDBC und Swing

Gruß
 

ARadauer

Top Contributor
Ich versteh auch die Frage nicht ganz? Wie meinst du das "würdet Ihr eine kleine Anwendung in J2SE realisieren"? Jetzt so vom Aufbau der Anwendung, oder wie meinst du das? Ja ganz normal halt... mvc und dao Pattern..
 

nocturne

Bekanntes Mitglied
UI-Design

Generell gillt immer: Bestehende Muster übernehmen!

z.B. Der Windows-Explorer hat links die Ordner, rechts die Dateien
oder Outlook Express (aka Windows Mail), links die Master, rechts die Details.

Grundsätzlich kommt es aber auf mehr an, so sollen wesentliche Elemente schnell ersichtlich sein (z.B. Das Windows-Start-Menü).


Ablauf:
Bei Programmstart die Master laden, vorselektieren und Actionlistener-klick Simulieren.
Bei Klick auf Master die Detail-Liste laden.

@RAdauer
DAO? Sind doch auch Beans.
 
Zuletzt bearbeitet:

ICanHasNick

Mitglied
Die dritte Antwort ist das wonach ich gesucht habe.

Es geht darum, bei bestimmten, simplen Anforderungen nicht den kompletten Java-Overkill zu benutzen. Mit der NetBeans IDE soll das einfach zu machen sein, die benutze ich aber nicht.

Die UI Gestaltungstipps kann ich leider nicht umsetzen, da ich auch Windows nicht benutze und nicht weiß, wie diese Programme heute aussehen :)
Der Ablauf an sich ist, so wie oben geschildert, einfach umzusetzen und vollständig transparent.

Was mich weiter interessieren würde, muss ich jetzt für jeden Event in der Master-Table per SQL-Statement die Detail-Tabelle füllen oder könnte/sollte man die Daten in Tabelle 2 ( auf einfache Art ) filtern?

Gruß
 

tuttle64

Bekanntes Mitglied
Was mich weiter interessieren würde, muss ich jetzt für jeden Event in der Master-Table per SQL-Statement die Detail-Tabelle füllen oder könnte/sollte man die Daten in Tabelle 2 ( auf einfache Art ) filtern?


Wenn Du die Länder mit einem JTree darstellst, dann werden beim Selektieren eines Landes "automatisch" die entsprechenden Städte selektiert. Einzige Voraussetzung ist, dass beim Aufbau des JTree die Städte richtig eingeordnet worden sind. Sofern die Datenmenge bescheiden ist, würde ich alle Länder und Städte von der DB lesen und fertig.
 

rhoermann

Mitglied
Warum willst du kein Framework dafür verwenden. Diese Problemstellung wurde schon mehrfach gelöst! Du beginnst nun mit recht simplen Anforderungen und schnell wird es komplexer, wie Filterung im Memory oder via DB. Suche im Memory oder via DB. Caching von bereits geladenen Daten oder immer wieder live Daten holen, Load-on-demand, usw..

Im Prinzip kannst du aber einfach beginnen:

Anzeigen der Daten in simplen JTables.
Dann beim Zeilenwechsel immer wieder die Detail Daten auslesen (vorsicht vor wiederholten Aufrufen)
(Du solltest dir einen Mechanismus überlegen um eine Verbindung zwischen Master und Detail zu definieren, bei DBs wäre das über Columns zu machen)
Dann kannst du mit Caching beginnen um Statements zu sparen
...

Das sollte für den Anfang genügen.

Der Tree macht die Sache nicht leichter, würde dir empfehlen zuerst die grundsätzlichen Probleme zu lösen.

Oder vielleicht doch lieber ein Framework verwenden?
 

ICanHasNick

Mitglied
Warum willst du kein Framework dafür verwenden. Diese Problemstellung wurde schon mehrfach gelöst!

Also, um ehrlich zu sein, es geht nicht wirklich um Länder und Städte, das war nur ein Beispiel. Ich möchte eine meiner alten Delphi Anwendungen mit 50+ Tabellen nach Java portieren.

In dieser Anwendung ist die komplette Geschäftslogik in der Datenbank und den Querys enthalten. Na ja und so ein Framework möchte meine schönen SQL-Konstukte in irgendwelche Objekte umwandeln, die ich gar nicht brauche und noch drei Abstraktionsschichten dazwischen schieben.

Was ich brauche sind einfach datensensitive Tabellen, die man mit SQL füttern und miteinander als Master/Detail verknüpfen kann.
 

rhoermann

Mitglied
Verstanden. Also wenn du eine ausgewachsene App portieren willst, dann kann ich dir JVx wärmstens empfehlen. Damit brauchst du keinen Source Code generieren (es sei denn du bestehst drauf). Du verwendest einfach bestehende Datenbanken mit Logik in der DB (Trigger, Views, ...) oder du verwendest vorhandene Logiken und packst diese in Java Klassen und verwendest diese in der Middleware.

Du musst mit JVx auch keine Client Server app bauen, auch wenn es dafür fein ist. Du kannst dir auch eine Desktop app erstellen.

Im einfachsten Fall nimmst du dir nur die Model Implementierung und die Swing Komponenten und baust diese in eine vorhandene Swing Applikation ein.

Es gibt einige Demo Anwendungen die Master/Detail Beziehungen zeigen und auch Suche, Filterung, Load-on-Demand usw.

Und wenn du mal etwas neues sehen willst, dann zieh dir mal die Videos in dem Channel rein: DB Apps entwickeln


Um unabhängig von Frameworks zu bleiben: Es geht natürlich auch zu Fuß, doch bedenke das du doch einiges Swing Know How brauchst, und dann noch etwas mehr Zeit um die Tücken zu lösen.

Ich könnte dir aber auch in diesem Bereich ein paar Tipps geben.
 

ICanHasNick

Mitglied
Habe mir gestern den WindowBuilderPro von Google heruntergeladen. Da ist bei mir der Spieltrieb durchgegangen :oops:, daher auch erst Heute die Antwort

Ich habe mir mal die Demos vom JVx Framework unter Ubuntu 10.04 (64-bit) angesehen.

Bin auch sofort auf ein paar Schwierigkeiten gestoßen. Aber als eingefleischter Linux User ist man das ja gewohnt. Zunächst musste ich die metacity-default-theme ändern um die Demo mit WebStart überhaupt zum laufen zu bringen ( im Firefox läuft es als Applet überhaupt nicht, Im Explorer - XP in der VirtualBox - gibt er einen Class Loader Fehler an ). Beim Klick auf Button "Komponenten" bringt er mir dann einen StackOverflowError. Die GUI ist auch aufgrund fehlender Scrollbalken z.T. nicht bedienbar. Die Response einzelner GUI-Elemente empfand ich als relativ träge. UTF Eingaben werden nicht übernommen.

Ansonsten aber sieht es doch ganz nett und brauchbar aus. Werde es demnächst mal unter Eclipse durchtesten, um zu sehen was ich da für mich rausholen kann.

Was Swing betrifft ist nach meinem ersten Gefühl die Entwicklung und Erweiterung von Komponenten wesentlich einfacher als das was ich unter Delphi (Kenntnisstand bis Version 7) gewohnt war. Die Ereignisbehandlung ist viel simpler und dass die GUI von Haus aus auf einem eigenen Thread läuft finde ich eigentlich gut.

Danke jedenfalls für dein Angebot der Hilfestellung. Fragen werden sicher noch kommen, wenn ich erst einmal in der Materie drin bin und feststecke.

Gruß

S.
 

rhoermann

Mitglied
Danke für deinen Bericht, da wird es mal Zeit für eine Ubuntu Testumgebung :) Auf meiner CentOS Box gab es bisher eigentlich keine Probleme und Windows lief bisher auch einwandfrei. Auch unter MacOS macht es einen guten Eindruck. Mal versuchen die Probleme nachzustellen.

UTF Probleme sind klar, weil die DB nicht mit UTF eingerichtet wurde.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
Ataria SQLite Werte aus zwei Tabellen zusammenführen Datenbankprogrammierung 8
I H2 - GUI Tool.... sehe aber keine Tabellen Datenbankprogrammierung 2
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
Kirby.exe Tabellen Zeilen combinen und splitten Datenbankprogrammierung 3
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
M Sql Tabellen erstellen Datenbankprogrammierung 3
F Tabellen automatisch erstellen wenn sie nicht existieren Datenbankprogrammierung 6
C Mapping mit Annotations von 2 Tabellen Datenbankprogrammierung 22
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
L Join zweier Tabellen in SQL Datenbankprogrammierung 2
P JSP - Daten aus 2 Tabellen in eine neue Tabelle einfügen Datenbankprogrammierung 1
I Oracle Wie ermitteln, welche Benutzer-(!)Tabellen in einer DB sind? Datenbankprogrammierung 1
H Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml. Datenbankprogrammierung 34
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
feinperligekohlensaeure MySQL Dynamische Tabellen. Wie kann man es besser machen? Datenbankprogrammierung 3
O HSQLDB Eine Entität, mehrere Tabellen Datenbankprogrammierung 8
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
D Count(*) auf 2 Tabellen anwenden Datenbankprogrammierung 7
D MySQL Many to Many Tabellen in Java abbilden? Datenbankprogrammierung 4
V SQLite 2 Tabellen vergleichen und nur Unterschiedliche Sätze rausgeben. Datenbankprogrammierung 31
F Tabellen verbinden Datenbankprogrammierung 13
L0MiN Wie kann ich eine bestimmte Seite aus verschiedenen Excel-Tabellen in eine neue Exceldatei kopieren? Datenbankprogrammierung 1
U Kann die Tabellen nicht finden Datenbankprogrammierung 0
D umschalten zwischen verschiedene Tabellen Datenbankprogrammierung 1
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
T Tabellen von nicht mehr vorhandenen Entities werden generiert Datenbankprogrammierung 0
J MySQL Workbench Tabellen werden verschoben Datenbankprogrammierung 1
M MySQL Tabellen dynamisch erstellen Datenbankprogrammierung 12
T Ähnliche Wrapperklassen + DB-Tabellen Datenbankprogrammierung 1
K HSQLDB Einzelne Tabellen abfragen? Datenbankprogrammierung 4
T Tabellen Alias Datenbankprogrammierung 7
M MySQL Insert über mehrere Tabellen Datenbankprogrammierung 7
J Tabellen in Tabellen finden Datenbankprogrammierung 4
S versionierte Tabellen Datenbankprogrammierung 2
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
I Was ist besser: Tabellen oder Spalten Datenbankprogrammierung 1
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
M Vergleich von Daten in verschiedenen Tabellen Datenbankprogrammierung 1
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
G 2 Tabellen und ein spezieller Eintrag Datenbankprogrammierung 2
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
T 2 Tabellen aus 2 Datenbanken miteinander vergleichen Datenbankprogrammierung 6
I MySQL Vergleich über mehrere Tabellen! Join? Datenbankprogrammierung 6
R PostgreSQL Tabellen hinzufügen, falls nicht vorhanden Datenbankprogrammierung 3
E Tabellen nacheinander auslesen Datenbankprogrammierung 10
D Übersichtliche Zuweisung von Daten in Tabellen Datenbankprogrammierung 17
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
A Zugriff auf DB-Tabellen mit Objekten Datenbankprogrammierung 3
K SQL tabellen auswahl in jfreechart Datenbankprogrammierung 2
0 Alle Tabellen aus DB lesen Datenbankprogrammierung 2
F Komplexer Tabellen-Join und Ausgabe in Excel Datenbankprogrammierung 17
H Fortlaufende Nummerierung innerhalb mehrerer Tabellen Datenbankprogrammierung 4
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
Consuelo Verbinden von zwei Tabellen, foreign key Datenbankprogrammierung 4
O MySQL sql Datei einzelner Tabellen erzeugen (über Java Programm) Datenbankprogrammierung 6
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
G SQL Abfrage über mehrere Tabellen Datenbankprogrammierung 28
H SQL Abfrage - zwei tabellen vergleichen. Datenbankprogrammierung 2
R MySQL Unbenutzte Tabellen/Spalten herausfinden Datenbankprogrammierung 7
I mit Java SQL Attribute / Tabellen erstellen Datenbankprogrammierung 17
C SQL String zwei Tabellen vergleichen und gleiche Zeile löschen Datenbankprogrammierung 25
R hibernate Frage zu configFile-Pfad und Groß/Kleinschreibung von Postgres-Tabellen Datenbankprogrammierung 8
J Mit einer Abfrage Worte suchen die in Zwei Tabellen enthalten sind Datenbankprogrammierung 5
F Einzelne Sql- Tabellen sichern (lokal) Datenbankprogrammierung 2
I MySQL - Anzahl Tabellen heraus finden Datenbankprogrammierung 6
B Es werden keine Tupel in Tabellen abgelegt Datenbankprogrammierung 2
S SQL inner join bei >10 Tabellen über 2 Variablen Datenbankprogrammierung 2
S HSQLDB Kopiere Tabellen Datenbankprogrammierung 2
Guybrush Threepwood Nachträgliches Ändern von Variableneigenschaften in (gefüllten) Tabellen Datenbankprogrammierung 3
J Tabellen auflisten, die in einer Datenbank enthalten sind Datenbankprogrammierung 16
T DB2 delete/update über 2 Tabellen Datenbankprogrammierung 2
T SQL Abfrage: Zeige alle Values von bestimmten Tabellen Datenbankprogrammierung 11
R Datenbanken, Tabellen normalisieren. Datenbankprogrammierung 1
A Datenbankzugriffe, mehr Tabellen Datenbankprogrammierung 12
oliver1974 JPA, JTable und 2 DB-Tabellen... Datenbankprogrammierung 2
J Starre Datenbankstruktur oder Tabellen bei Bedarf neu erzeugen? Datenbankprogrammierung 5
X Abfrage über 2 Tabellen mit Tücken Datenbankprogrammierung 3
G verbindung 2er Tabellen Datenbankprogrammierung 3
M Auswerten über drei Tabellen Datenbankprogrammierung 2
H Inserts in 2 Tabellen 1:n Datenbankprogrammierung 6
G Mehrere Tabellen abfragen Datenbankprogrammierung 7
M JavaDB/Derby: Tabellen erstellen Datenbankprogrammierung 8
G 2 Tabellen in einer 1:n Verbindung Datenbankprogrammierung 2
M insert in 2 tabellen Datenbankprogrammierung 7
MQue Metadaten für Tabellen in der Datenbank Datenbankprogrammierung 5
D aus mehreren sql tabellen matchen und sortieren Datenbankprogrammierung 6
G 2 Tabellen zusammenfügen wie? Datenbankprogrammierung 8
G Tabellen-Dokument als Datenbank Datenbankprogrammierung 2
S MySQL: Abfrage auf 2 Tabellen durch join Datenbankprogrammierung 5
Y Hibernate - Mapping der Beziehung zwischen 2 Tabellen Datenbankprogrammierung 2
ARadauer tabellen kommentar ausgeben Datenbankprogrammierung 2
S Mysql abfrage über 2 tabellen. Datenbankprogrammierung 10
Y Hibernate - Werte aus 2 Tabellen laden Datenbankprogrammierung 29
S Postgres und die Ursprungstabelle bei vererbten Tabellen Datenbankprogrammierung 4
M Mehrere Tabellen zusammenführen Datenbankprogrammierung 4
A Index bzw. Indizes von Tabellen herausfinden Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben