JavaFX Von Datenbank in ListView

ffghts

Mitglied
Hallo,

ich stehe mit meinem Problem ein bisschen auf dem Schlauch und hoffe, dass ihr mir vielleicht helfen könnt. Ich möchte gerne Daten aus der Datenbank in einem ListView anzeigen lassen.

Ich habe eine Klasse für meine MySQL Verbindung und eine Klasse für mein MainWindow(hier ist das ListView).
Aus meiner Datenbank hole ich nun per Button Click mehrere Gruppennamen und Gruppenid's. Jetzt weiss ich aber nicht genau, wie ich die Daten von meiner Sql Klasse in meine MainWindow Klasse bekomme. Wenn ich eine Instanz von meinem MainWindow in der Sql Klasse mache, bekomme ich eine NullPointException, da das ListView nicht existiert. Habe es dann über das Singleton Pattern versucht, was auch nicht funktioniert hat. Habe es daraufhin gleich wieder verworfen, weil ich sowieso nicht genau weiss, ob das eine gute Lösung gewesen wäre.

Habe es dann mit gettern in der Sql Klasse versucht. Das funktioniert auch soweit. Habe also eine ArrayListe erstellt und mir so die Gruppennamen zurückgegeben. Nur fehlen mir jetzt noch die Gruppenid's, wofür ich dann ja eine zweite Liste bräuchte, oder? Wenn ja, wie durchlaufe ich beide gleichzeitig und packe die passende Nummer mit dem passenden Namen in mein ListView?
Oder gibt es eine ganz andere, bessere Lösung?

Hier noch ein bisschen Code:

SqlConnection.class
Java:
public static void refreshGroupList() {

        conn = getInstance();

        if(conn != null) {
            Statement query;

            try {

                query = conn.createStatement();

                String sqlQuery = "SELECT group_name, id FROM " + Constants.SQL_TABLE_GROUP;

                ResultSet result = query.executeQuery(sqlQuery);

                while(result.next()) {
                    String groupName = result.getString("group_name");
                    String id = result.getString("id");

                    list.add(groupName);
                }

            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    public static List<String> listOfNames() {
        return list;
    }

MainWindowController.class
Java:
public void refreshList() {

        SqlConnection sqlConnection = new SqlConnection();
        sqlConnection.refreshGroupList();

        for (String string : sqlConnection.listOfNames()) {
            items.add(new Group(string, "1"));
        }
    }
}

Grüße
 

Joose

Top Contributor
Du kannst dir auch eine Klasse erstellen, welche diese Daten (Gruppen Id und Gruppenname) kapselt. Beim Auslesen aus der Datenbank erstellst du dann immer Objekte dieser Klasse, füllst diese mit den Daten und legst diese Objekte dann in die Liste.
 

ffghts

Mitglied
Hi,

danke erstmal für deine Antwort. Ich bin mir aber nicht sicher, ob ich das richtig verstanden habe.

Ich erstelle eine separate Klasse und kapsle dort meine Id und meinen Namen:
Java:
public class SqlData {

    private String groupName;
    private String id;

    public SqlData(final String groupName, final String id) {
        this.setGroupName(groupName);
        this.setId(id);
    }

    public String getGroupName() {
        return groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
}

Dann packe ich alles in eine Liste:
Java:
private static List<SqlData> list = new ArrayList<SqlData>();

    public static void refreshGroupList() {

        conn = getInstance();

        if(conn != null) {
            Statement query;

            try {

                query = conn.createStatement();

                String sqlQuery = "SELECT group_name, id FROM " + Constants.SQL_TABLE_GROUP;

                ResultSet result = query.executeQuery(sqlQuery);

                while(result.next()) {
                    String groupName = result.getString("group_name");
                    String id= result.getString("id");

                    SqlData sqlData = new SqlData(groupName, id);

                    list.add(sqlData);
                }

            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    public List getList() {
        return list;
    }
}

Und die Liste hole ich mir dann in mein MainWindow und packe sie in mein ListView:
Java:
public void refreshList() {

        SqlConnection sqlConnection = new SqlConnection();
        sqlConnection.refreshGroupList();

        for(Object object : sqlConnection.getList()) {
            // items.add(new Group("", "")); <--- ??
        }
    }

Nur habe ich dann ja eine Liste von Objekten, wie bekomme ich denn den einzelnen Inhalt der Objekte?

Grüße
 

Joose

Top Contributor
Ich erstelle eine separate Klasse und kapsle dort meine Id und meinen Namen:
Genau, einzig den Namen dieser Klasse würde ich ändern.
Was ist wenn du noch andere Daten auslesen wirst? Heißt die Klasse dann "SqlData1" usw.? Auch lässt sich nur schwer rauslesen für was die Klasse existiert - ja für Daten aus der Datenbank, aber welche gibt es nicht her.
Nenn diese Klasse doch einfach "Group" oder "GroupData".

Java:
private static List<SqlData> list = new ArrayList<SqlData>();

    public static void refreshGroupList() {
......
                String sqlQuery = "SELECT group_name, id FROM " + Constants.SQL_TABLE_GROUP;
......

    public List getList() {
        return list;
    }
}
Warum ist die Liste und die Methode refreshGroupList statisch? Aber getList nicht? --> Vermeide "static" ;)
Statt dir deinen SQL Befehl so zusammenzubauen verwende lieber PreparedStatements, dadurch verhinderst du SQL Injection.
Warum gibt getList nur eine List zurück und keine List<SqlData>?

Java:
public void refreshList() {

        SqlConnection sqlConnection = new SqlConnection();
        sqlConnection.refreshGroupList();

        for(Object object : sqlConnection.getList()) {
            // items.add(new Group("", "")); <--- ??
        }
    }

Nur habe ich dann ja eine Liste von Objekten, wie bekomme ich denn den einzelnen Inhalt der Objekte?

Dass deine Klasse die Daten ausliest "SqlConnection" heißt finde ich verwirrend.
getList() gibt dir nur eine List zurück. Wnn du stattdessen ein List<SqlData> zurückgibst, dann kannst du in for-Schleife über deine SqlData Objekte iterieren und normal auf die getter zugreifen.

Frage: Worin unterscheiden sich denn die Klassen "SqlData" und "Group"? Warum erstellst du nicht gleich "Group" Objekte in der Methode "refreshGroupList"?
 

ffghts

Mitglied
Danke, jetzt funktioniert es. :)

Ja, einige Klassennamen sind nicht ganz so gut gewählt. Ich übe gerade bisschen mit der Datenbank und so ist immer mehr Code entstanden und die Namen passten dann irgendwann nicht mehr wirklich.

Habe die Methoden statisch gemacht, da es in einem Tutorial im Internet auch war. Warum genau das gemacht wurde, stand allerdings nicht dabei. Habe es einfach so übernommen.
Ich wusste nicht wirklich, dass es PreparedStatements gibt. Muss mir erstmal angucken, wie die funktionieren, aber auch danke dafür.

Frage: Worin unterscheiden sich denn die Klassen "SqlData" und "Group"? Warum erstellst du nicht gleich "Group" Objekte in der Methode "refreshGroupList"?
Jetzt wo du das so sagst, eigentlich unterscheiden die sich gar nicht. :confused: Kann auch einfach die verwenden. Dann brauche ich SqlData gar nicht mehr.

Ich danke dir auf jeden Fall vielmals. Habe mal wieder was dazu gelernt. :D

Grüße
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Tabelle zu Datenbank hinzufügen / Apache Derby AWT, Swing, JavaFX & SWT 7
L JavaFx Textformatierung mittels Datenbank und Funktion anpassen AWT, Swing, JavaFX & SWT 5
N Java MySQL Datenbank durchsuchen? AWT, Swing, JavaFX & SWT 7
ralfb1105 JavaFX TreeView dynamisch aus Datenbank Tabelle erstellen AWT, Swing, JavaFX & SWT 22
J Searchfunktion auf einer MS Access Datenbank AWT, Swing, JavaFX & SWT 7
M TableView + Datenbank Aktualisierung AWT, Swing, JavaFX & SWT 4
Bluedaishi JavaFX Button Image aus Datenbank AWT, Swing, JavaFX & SWT 13
S Insert Umlaute in Datenbank AWT, Swing, JavaFX & SWT 5
J Suchmaschine einer Datenbank AWT, Swing, JavaFX & SWT 5
P JavaFX, TableView und Datenbank AWT, Swing, JavaFX & SWT 4
kilopack15 Simple Datenbank mit AWT AWT, Swing, JavaFX & SWT 9
K Textvorschläge aus der Datenbank AWT, Swing, JavaFX & SWT 25
A checkbox mit allen tabllen aus datenbank befüllen AWT, Swing, JavaFX & SWT 8
C (JavaFX 8) SQLite Datenbank in einem TableView darstellen AWT, Swing, JavaFX & SWT 2
M Combo Box auswahl in eine Datenbank speichern AWT, Swing, JavaFX & SWT 1
V Java FX POJO aus Datenbank in FX TableView / Best Practice AWT, Swing, JavaFX & SWT 0
thet1983 Swing JTable mit MySQL Datenbank AWT, Swing, JavaFX & SWT 14
N JTable, AbstractTableModel aus Datenbank initialisieren AWT, Swing, JavaFX & SWT 8
D Applet GWT speichert Daten nicht in Datenbank AWT, Swing, JavaFX & SWT 2
E JList /DefaultListModel mit Datenbank verbinden AWT, Swing, JavaFX & SWT 10
M Datenbank in Jtable mit einem JButton anzeigen lassen AWT, Swing, JavaFX & SWT 4
S Frameübergreifend in Datenbank eingeloggt bleiben AWT, Swing, JavaFX & SWT 9
S Swing JComboBox mit Datenbank füllen AWT, Swing, JavaFX & SWT 16
I Jlist dynamisch aus Datenbank füllen AWT, Swing, JavaFX & SWT 14
N Formular für Suchanfragen in einer Datenbank AWT, Swing, JavaFX & SWT 3
X Swing Kategoriebaum aus Datenbank erstellen AWT, Swing, JavaFX & SWT 39
J Swing Datenbank in ein Swingfenster importieren? AWT, Swing, JavaFX & SWT 13
K TableModel mit Daten aus Datenbank füllen AWT, Swing, JavaFX & SWT 7
C Combobox im JFrame aus Datenbank befüllen AWT, Swing, JavaFX & SWT 6
C Bild in einer Datenbank speichern? AWT, Swing, JavaFX & SWT 7
S Swing Daten aus Datenbank in JTable AWT, Swing, JavaFX & SWT 2
C Anführungszeichen in JTextArea für Datenbank ersetzen AWT, Swing, JavaFX & SWT 3
B Datensätze einer Datenbank in JTable ausgeben AWT, Swing, JavaFX & SWT 14
O JDialog anzeigen beim öffnen einer Datenbank AWT, Swing, JavaFX & SWT 4
A JList mit 2 Werten aus der Datenbank füttern AWT, Swing, JavaFX & SWT 5
G JTable aus Datenbank füllen AWT, Swing, JavaFX & SWT 4
T Warnkorb + Tabelle + Datenbank AWT, Swing, JavaFX & SWT 3
P JTree aus Datenbank für Kategorien-Realisierung AWT, Swing, JavaFX & SWT 2
P JTable (->Datenbank) editieren/updaten AWT, Swing, JavaFX & SWT 3
R Jtree aus Datenbank akutalisieren AWT, Swing, JavaFX & SWT 9
M Datenbericht aus Datenbank darstellen.(einfaches Konzept) AWT, Swing, JavaFX & SWT 2
A JTable mit MySQL Datenbank füllen AWT, Swing, JavaFX & SWT 12
C [JTable] Update der Datenbank AWT, Swing, JavaFX & SWT 6
U Bild in Datenbank speichern AWT, Swing, JavaFX & SWT 26
T JTable und Datenbank AWT, Swing, JavaFX & SWT 20
W JTextfield aktualisieren / Wert aus Datenbank neu abfragen AWT, Swing, JavaFX & SWT 2
R JTable mit Daten aus der Datenbank füllen AWT, Swing, JavaFX & SWT 3
M Daten aus Datenbank ins JTable einfügen AWT, Swing, JavaFX & SWT 4
G Bild direkt aus Datenbank anzeigen lassen AWT, Swing, JavaFX & SWT 14
M JComboBox aus Datenbank mit 2 Werten füllen AWT, Swing, JavaFX & SWT 5
MiMa Obseved List mit ListView (Dateiliste) AWT, Swing, JavaFX & SWT 4
H JavaFX ListView MultipleSelection AWT, Swing, JavaFX & SWT 9
AmsananKING ListView Drag And Drop AWT, Swing, JavaFX & SWT 0
AmsananKING Drag And Drop Filenames Inside A Listview AWT, Swing, JavaFX & SWT 1
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
Davee JavaFX ListView = null wenn ich sie in Laufzeit ändern will! AWT, Swing, JavaFX & SWT 16
G Eintrag soll nur einmal in Listview zu sehen sein AWT, Swing, JavaFX & SWT 3
T ListView nach Erweiterung Fehler in CellFactory AWT, Swing, JavaFX & SWT 8
T ListView in TableCell AWT, Swing, JavaFX & SWT 4
MiMa File Dateien im ListView als Name anzeigen? AWT, Swing, JavaFX & SWT 6
B JavaFX ListView in Kombination mit TextField AWT, Swing, JavaFX & SWT 5
B JavaFX das richtige ListView filtern AWT, Swing, JavaFX & SWT 2
B Dynamische ListView-Größe, die bei Fenstergrößenänderung sich anpasst AWT, Swing, JavaFX & SWT 19
S JavaFX ListView Inhalte während Laufzeit ändern AWT, Swing, JavaFX & SWT 23
karlmasutra JavaFX ListView zeigt Einträge nicht an AWT, Swing, JavaFX & SWT 11
B Textfelder in einer ListView ausgeben AWT, Swing, JavaFX & SWT 13
J CheckBoxListCell auf click event in listView reagieren AWT, Swing, JavaFX & SWT 1
karlmasutra JavaFX Listenelemente bearbeiten Listview AWT, Swing, JavaFX & SWT 1
D JavaFX Listview mit observableList AWT, Swing, JavaFX & SWT 6
MiMa Selektion aus einer ListView AWT, Swing, JavaFX & SWT 5
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L JavaFX ListView Größe anpassen AWT, Swing, JavaFX & SWT 1
F JavaFX ListView füllen in Controller Class AWT, Swing, JavaFX & SWT 12
F JavaFX In SampleController ObservableList zu ListView hinzufügen AWT, Swing, JavaFX & SWT 0
D JavaFX ListView & TabelView AWT, Swing, JavaFX & SWT 9
F JavaFX Custom ListView erstellt ghost Element AWT, Swing, JavaFX & SWT 3
F JavaFX ListView Zeilenhöhe AWT, Swing, JavaFX & SWT 2
M Auswahl aus einer ListView AWT, Swing, JavaFX & SWT 3
F Icons neben Text in Listview setzen AWT, Swing, JavaFX & SWT 2
K ListView right click AWT, Swing, JavaFX & SWT 1
Y Listview Textfield vergrößern, Schrift anpassen AWT, Swing, JavaFX & SWT 0
C Liste - ListView wird nicht angezeigt AWT, Swing, JavaFX & SWT 15
L JavaFX ListView oder TableView Style überschreiben? AWT, Swing, JavaFX & SWT 6
thobren listview seclect abschalten AWT, Swing, JavaFX & SWT 1
NoXiD Java FX JFX 2 DnD ListView AWT, Swing, JavaFX & SWT 3
T [JavaFX 2.0] ListView editieren AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben