Follow the JavaFX MySQL connection example

Anyone can give me an example of a class connecting JavaFX and mysql. I don't want the main class. There is one. I just want to connect any application to the MySQL database and get a row from the database to an example in the table. Search the whole Internet. I can't find any direct place. I don't want any fancy things to complete the work. Please

Solution

At a minimum, you need three classes: one for representing data, one for UI, and one for managing database connections Of course, in a real application, you need more than that This example follows the same basic example as tableview tutorial

Suppose your database has a person table with three columns, first_ name,last_ name,email_ address.

Then you will write a person class:

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

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

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

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

    public Person() {}

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

}

Classes that access data from the database:

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 {

    // in real life,use a connection pool....
    private Connection connection ;

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

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

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

    // other methods,eg. addPerson(...) etc
}

Then the UI class:

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 driverName,dbURL,password...

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

(I just input without test, so there may be spelling errors, lack of import, etc., but it should be enough for you to understand.)

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>