„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie verbinde ich eine JavaFX-Anwendung mit einer MySQL-Datenbank und zeige Daten in einer TableView an?

Wie verbinde ich eine JavaFX-Anwendung mit einer MySQL-Datenbank und zeige Daten in einer TableView an?

Veröffentlicht am 23.11.2024
Durchsuche:860

How to Connect a JavaFX Application to a MySQL Database and Display Data in a TableView?

JavaFX MySQL-Datenbankverbindung

Das Verbinden von JavaFX-Anwendungen mit MySQL-Datenbanken erfordert eine bestimmte Klasse, die die Verbindung und den Datenabruf übernimmt. Hier ist ein einfaches Beispiel:

PersonDataAccessor:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;

import java.util.List;
import java.util.ArrayList;

public class PersonDataAccessor {

    private Connection connection;

    // Constructor
    public PersonDataAccessor(String driverClassName, String dbURL, String user, String password) throws SQLException, ClassNotFoundException {
        Class.forName(driverClassName);
        connection = DriverManager.getConnection(dbURL, user, password);
    }

    // Close connection
    public void shutdown() throws SQLException {
        if (connection != null) {
            connection.close();
        }
    }

    // Get person list
    public List getPersonList() throws SQLException {
        try (
            Statement stmnt = connection.createStatement();
            ResultSet rs = stmnt.executeQuery("select * from person");
        ) {
            List personList = new ArrayList();
            while (rs.next()) {
                String firstName = rs.getString("first_name");
                String lastName = rs.getString("last_name");
                String email = rs.getString("email_address");
                Person person = new Person(firstName, lastName, email);
                personList.add(person);
            }
            return personList;
        }
    }

}

Diese Klasse kümmert sich um den Verbindungsaufbau, die Abfrageausführung und den Datenabruf. Die Methode getPersonList() fragt die Tabelle „Person“ in der Datenbank ab und wandelt die abgerufenen Daten in eine Liste von Person-Objekten um.

Personenmodell (Datendarstellung):

import javafx.beans.property.StringProperty;
import javafx.beans.property.SimpleStringProperty;

public class Person {

    private StringProperty firstName = new SimpleStringProperty(this, "firstName");
    public StringProperty firstNameProperty() {
        return firstName;
    }
    public String getFirstName() {
        return firstNameProperty().get();
    }
    public void setFirstName(String firstName) {
        firstNameProperty().set(firstName);
    }

    private StringProperty lastName = new SimpleStringProperty(this, "lastName");
    public StringProperty lastNameProperty() {
        return lastName;
    }
    public String getLastName() {
        return lastNameProperty().get();
    }
    public void setLastName(String lastName) {
        lastNameProperty().set(lastName);
    }

    private StringProperty email = new SimpleStringProperty(this, "email");
    public StringProperty emailProperty() {
        return email;
    }
    public String getEmail() {
        return emailProperty().get();
    }
    public void setEmail(String email) {
        emailProperty().set(email);
    }

    public Person() {}

    public Person(String firstName, String lastName, String email) {
        setFirstName(firstName);
        setLastName(lastName);
        setEmail(email);
    }

}

Diese Klasse definiert das Person-Objekt mit Eigenschaften für Vorname, Nachname und E-Mail.

UI-Klasse (zeigt Daten in einer Tabelle an):

import javafx.application.Application;
import javafx.scene.control.TableView;
import javafx.scene.control.TableColumn;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.BorderPane;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class PersonTableApp extends Application {

    private PersonDataAccessor dataAccessor;

    @Override
    public void start(Stage primaryStage) throws Exception {
        dataAccessor = new PersonDataAccessor(...); // Provide DB connection details

        TableView personTable = new TableView();
        TableColumn firstNameCol = new TableColumn("First Name");
        firstNameCol.setCellValueFactory(new PropertyValueFactory("firstName"));
        TableColumn lastNameCol = new TableColumn("Last Name");
        lastNameCol.setCellValueFactory(new PropertyValueFactory("lastName"));
        TableColumn emailCol = new TableColumn("Email");
        emailCol.setCellValueFactory(new PropertyValueFactory("email"));

        personTable.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
        personTable.getItems().addAll(dataAccessor.getPersonList());

        BorderPane root = new BorderPane();
        root.setCenter(personTable);
        Scene scene = new Scene(root, 600, 400);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    @Override
    public void stop() throws Exception {
        if (dataAccessor != null) {
            dataAccessor.shutdown();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Diese Klasse initialisiert die Benutzeroberfläche und zeigt die Person-Objekte in einer TableView an.

Durch Befolgen dieser Schritte können Sie eine JavaFX-Anwendung erstellen, die erfolgreich eine Verbindung zu einer MySQL-Datenbank herstellt, Daten abruft und zeigt es in einer benutzerfreundlichen Tabelle an.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3