当前位置: 首页 > 面试题库 >

JavaFX MySQL连接示例请

邓业
2023-03-14
问题内容

任何人都可以给我一个将JavaFX与MySQL连接的类的示例,不希望Main类,只有一个,仅需要一个将任何应用程序连接至MySQL数据库并从该数据库中获取一行到表中的类的示例,进行搜索整个互联网,我什么都找不到,我不想要任何花哨的东西只是为了完成工作。干净简单的东西。


问题答案:

至少需要三个类:一个用于表示数据,一个用于UI,以及一个用于管理数据库连接。当然,在真正的应用程序中,您将需要的还不止这些。本示例遵循与教程相同的基本示例TableView

假设你的数据库有一个person三列的表,first_namelast_nameemail_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, user, 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);
    }
}

(我只是在未经测试的情况下输入了此内容,因此可能会有错别字,缺少输入内容等,但这足以让您知道。)



 类似资料:
  • 本文向大家介绍Python WebSocket长连接心跳与短连接的示例,包括了Python WebSocket长连接心跳与短连接的示例的使用技巧和注意事项,需要的朋友参考一下 安装 先来看一下,长连接调用方式:  长连接,参数介绍: (1)url: websocket的地址。 (2)header: 客户发送websocket握手请求的请求头,{'head1:value1','head2:value

  • 本文向大家介绍vue 更改连接后台的api示例,包括了vue 更改连接后台的api示例的使用技巧和注意事项,需要的朋友参考一下 vue 更改连接后台的api,是更改在config文件夹下的index.js文件中的proxyTable的值。 如下代码,其中 10.1.166.88:8888/springTimes 为后台暴露出来的appi。 更改后需要重新 npm run dev 才起效果。 以上这

  • 本文向大家介绍jdbc连接oracle数据库功能示例,包括了jdbc连接oracle数据库功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jdbc链接oracle数据库功能。分享给大家供大家参考,具体如下: 希望本文所述对大家java程序设计有所帮助。

  • 本文向大家介绍php pdo连接数据库操作示例,包括了php pdo连接数据库操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php pdo连接数据库操作。分享给大家供大家参考,具体如下: pdo连接数据库的有点是能实现不同数据库之间的转换,而且有事务功能的回滚,更有pdo::prepare();pdo:::execute()函数的预处理查询,所以我个人认为pdo的功能还是比较强大

  • 本文向大家介绍Django+Vue实现WebSocket连接的示例代码,包括了Django+Vue实现WebSocket连接的示例代码的使用技巧和注意事项,需要的朋友参考一下 近期有一需求:前端页面点击执行任务,实时显示后端执行情况,思考一波;发现 WebSocket 最适合做这件事。 效果 测试 ping www.baidu.com 效果 点击连接建立ws连接 后端实现 所需软件包 后端主要借助

  • 本文向大家介绍php使用pdo连接sqlite3的配置示例,包括了php使用pdo连接sqlite3的配置示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php使用pdo连接sqlite3的配置方法。分享给大家供大家参考,具体如下: 刚刚开始使用php+sqlite 的时候,一直以为自己使用的是sqlite3 ,其实不是,php从php5 >=5.3.0 的时候才开始默认支持sqlit