Java JavaFX Eintrag aus Datenbank ausgeben

Injector

Lt. Junior Grade
Registriert
Mai 2016
Beiträge
301
Arbeite aktuell an einem JavaFX Projekt. In meiner Datenbank gibt es jetzt die Spalte name, Vorname und Geburtstag. Jetzt möchte ich, dass unter einem bestimmten Bild genau diese Informationen aus der Datenbank entnommen wird und es dann unter dem Bild angezeigt wird. Wie genau muss ich da vorgehen bzw. nach was sollte ich im Internet suchen, um Beispiele zu finden oder könnte es einer von euch ausführlich erklären?
Hier mein Source. Und bei der if anweisung wird ein NullPointerException angezeigt
Code:
@FXML
    private Text bildtxt;

    @Override
    public void initialize(URL arg0, ResourceBundle arg1) {
        connImg= new conn();

    }

    @FXML
    public void bildButton(ActionEvent event) {
        try {
            connection = connImg.getConnection();

            String str="SELECT name FROM person";
            pst=connection.prepareStatement(str);
            rs=pst.executeQuery(str);

            if(rs.next()){
                bildtxt.setText(rs.getString(1));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
Zuletzt bearbeitet:
 
Injector schrieb:
nach was sollte ich im Internet suchen

Sollen wir jetzt für dich die Google Suche nach "JavaFX database tutorial" machen und dir die Links raussuchen, oder was genau stellst du dir vor? Du kannst mir doch nicht erzählen dass du dazu nix findest. Mal davon abgesehen dass du immer noch Java programmieren musst, also du genauso gut nach "Java database tutorial" suchen kannst.

Sorry, aber ich bin grade echt verwirrt, JDBC und Java ist glaube ich etwas, worüber es mit die meisten Tutorials im Netz zu finden gibt. Und die Datenbank hast du ja schon, also musst du vermutlich auch kein SQL mehr lernen - glaube ich.

Und sowas wie Spring/JPA wirst du wohl kaum brauchen für dein Tool, so wie es klingt.
 
Ich weiß schon wie ich auf meine Datenbank zugreife und auch wie ich die Daten Abfrage. Ich weiß nur nicht wie ich es auf einer GUI anzeigen soll, die Daten die ich angefragt habe. Ich möchte halt, wenn ich auf ein Button drücke, dass unter dem Bild die Infos aus der Datenbank entnommen wird und drunter angezeigt wird
 
Hier mein Source. Und bei der if anweisung wird ein NullPointerException angezeigt
Code:
@FXML
    private Text bildtxt;

    @Override
    public void initialize(URL arg0, ResourceBundle arg1) {
        connImg= new conn();

    }

    @FXML
    public void bildButton(ActionEvent event) {
        try {
            connection = connImg.getConnection();

            String str="SELECT name FROM person";
            pst=connection.prepareStatement(str);
            rs=pst.executeQuery(str);

            if(rs.next()){
                bildtxt.setText(rs.getString(1));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
Die Datenbankabfrage sollte man entkoppeln. Und nicht im UI-Thread behandeln (Stichwort: Worker). In der View zeigst Du nur Daten an und reagierst auf die Eingaben.

Was macht denn bei der Darstellung konkret Probleme? Testweise lässt Du die Datenbank außen vor und erstellst nur eine Demo-Objekt mit Testdaten zur Anzeige.
 
Rossie schrieb:
Die Datenbankabfrage sollte man entkoppeln. Und nicht im UI-Thread behandeln (Stichwort: Worker). In der View zeigst Du nur Daten an und reagierst auf die Eingaben.

Was macht denn bei der Darstellung konkret Probleme? Testweise lässt Du die Datenbank außen vor und erstellst nur eine Demo-Objekt mit Testdaten zur Anzeige.
Es wird nichts dargestellt. Sobald ich auf das Button drücke bekomme ich ein NullPointerException.
 
Ach so, die Anzeige hatte ich überlesen. Sorry.

Dann musst Du die Exception entweder entsprechend interpretieren oder den Code debuggen. Die Datenbankabfrage liefert halt noch nicht das gewünschte Ergebnis.
 
Rossie schrieb:
Ach so, die Anzeige hatte ich überlesen. Sorry.

Dann musst Du die Exception entweder entsprechend interpretieren oder den Code debuggen. Die Datenbankabfrage liefert halt noch nicht das gewünschte Ergebnis.
Fehler soll hier dran liegen, aber meine Kenntnisse reichen nicht aus um zu erkennen was genau der Fehler ist
Code:
 bildtxt.setText(rs.getString(1));

EDIT: Hab es gerade mit println ausgeben lassen und die richtige zeile wird auch ausgegeben, also kann es an der abfrage bzw datenbank nicht sein
Code:
System.out.println(rs.getString(1));
 
Zuletzt bearbeitet:
Dann dürfte 'bildtxt' 'null' sein. Das Text Objekt muss irgendwann natürlich auch erzeugt werden.

Mit FXML kenne ich mich allerdings nicht aus. Ich schreibe GUI lieber selbst. Verwendest Du einen GUI-Builder?

Händisch wäre es:

Java:
private Text bildtxt = new Text();

(Wobei man die Node natürlich auch noch dem Scenegraph hinzufügen muss)
 
Rossie schrieb:
Dann dürfte 'bildtxt' 'null' sein. Das Text Objekt muss irgendwann natürlich auch erzeugt werden.

Mit FXML kenne ich mich allerdings nicht aus. Ich schreibe GUI lieber selbst. Verwendest Du einen GUI-Builder?

Händisch wäre es:

Java:
private Text bildtxt = new Text();
Ja, verwende SceneBuilder 2.0 da es für mich so einfacher ist per drag&drop mein GUI zu erstellen
Hab jetzt so wie du ein Objekt von Text erstellt und es kommt kein nullPointerException mehr, aber es wird auch nichts angezeigt auf meinem GUI
 
Einfacher nur, solange kein Fehler auftritt... :)

Die Text-Node muss wie gesagt auch noch dem Scenegraph hinzugefügt werden. Ich kenne mich mit GUI-Buildern nicht aus. Finde die nur hinderlich. Aber immerhin weißt Du jetzt, wo das Problem liegt.
 
  • Gefällt mir
Reaktionen: Injector
Rossie schrieb:
Einfacher nur, solange kein Fehler auftritt... :)

Die Text-Node muss wie gesagt auch noch dem Scenegraph hinzugefügt werden. Ich kenne mich mit GUI-Buildern nicht aus. Finde die nur hinderlich. Aber immerhin weißt Du jetzt, wo das Problem liegt.
Leider endet mein wissen auch hier :D vielleicht schreibt hier noch jemand, der sich mehr auskennt mit SceneBuilder auskennt
 
Zurück
Oben