Maison > base de données > tutoriel mysql > Comment connecter une application JavaFX à une base de données MySQL et afficher les données dans une TableView ?

Comment connecter une application JavaFX à une base de données MySQL et afficher les données dans une TableView ?

Linda Hamilton
Libérer: 2024-11-25 05:29:14
original
783 Les gens l'ont consulté

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

Connexion à la base de données JavaFX MySQL

La connexion des applications JavaFX aux bases de données MySQL nécessite une classe spécifique qui gère la connexion et la récupération des données. Voici un exemple simple :

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<Person> getPersonList() throws SQLException {
        try (
            Statement stmnt = connection.createStatement();
            ResultSet rs = stmnt.executeQuery("select * from person");
        ) {
            List<Person> 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;
        }
    }

}
Copier après la connexion

Cette classe gère l'établissement de la connexion, l'exécution des requêtes et la récupération des données. La méthode getPersonList() interroge la table « personne » dans la base de données et convertit les données récupérées en une liste d'objets Personne.

Modèle de personne (représentation des données) :

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);
    }

}
Copier après la connexion

Cette classe définit l'objet Person avec des propriétés pour firstName, lastName et email.

Classe UI (affiche les données dans une table) :

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<Person> personTable = new TableView<>();
        TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name");
        firstNameCol.setCellValueFactory(new PropertyValueFactory<>("firstName"));
        TableColumn<Person, String> lastNameCol = new TableColumn<>("Last Name");
        lastNameCol.setCellValueFactory(new PropertyValueFactory<>("lastName"));
        TableColumn<Person, String> 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);
    }
}
Copier après la connexion

Cette classe initialise l'interface utilisateur et affiche les objets Person dans un TableView.

En suivant ces étapes, vous pouvez créer une application JavaFX qui se connecte avec succès à une base de données MySQL, récupère les données et les affiche dans un tableau convivial.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal