加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

请关注JavaFX MySQL连接示例

发布时间:2020-12-14 05:49:21 所属栏目:Java 来源:网络整理
导读:任何人都可以给我一个连接 JavaFX和 MySQL的类的例子,不想要Main类,有一个,只想要一个将任何应用程序连接到MySQL数据库并从该数据库获取一行到表中的一个例子,搜索整个互联网,我没有找到任何直截了当的地方我不想要任何花哨的东西来完成工作请. 干净简单的东
任何人都可以给我一个连接 JavaFX和 MySQL的类的例子,不想要Main类,有一个,只想要一个将任何应用程序连接到MySQL数据库并从该数据库获取一行到表中的一个例子,搜索整个互联网,我没有找到任何直截了当的地方我不想要任何花哨的东西来完成工作请.
干净简单的东西.

解决方法

至少,您需要三个类:一个用于表示数据,一个用于UI,另一个用于管理数据库连接.当然,在真正的应用程序中,您需要的不仅仅是这个.此示例遵循与 TableView tutorial相同的基本示例

假设您的数据库有一个包含三列的person表,first_name,last_name,email_address.

然后你会写一个Person类:

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

}

从数据库访问数据的类:

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
}

然后是UI类:

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

(我只是在未经测试的情况下输入,因此可能存在拼写错误,缺少导入等,但它应该足以让您了解.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读