JavaFX与JDBC结合实现TableView展示MySQL数据
在JavaFX中,TableView
是一个强大的组件,用于展示数据集,它允许用户与数据进行交互,例如排序、筛选和编辑。本教程将探讨如何利用 JavaFX 与 JDBC (Java Database Connectivity)结合,从 MySQL数据库 中获取数据并填充到 TableView
中。同时,我们也会讨论如何将用户在 TableView 中输入的数据保存回数据库。确保你已经安装了 JavaFX SDK 和 MySQL数据库,并且创建了一个简单的数据库表。这里假设你有一个名为 users
的表,包含 id
(主键,整型)、username
(字符串)和 email
(字符串)字段。
- 连接数据库
要连接到 MySQL数据库,你需要引入 JDBC驱动,如 mysql-connector-java
。在 pom.xml
(如果你使用 Maven)或 build.gradle
(如果你使用 Gradle)中添加依赖。然后,你可以使用 DriverManager.getConnection()
方法建立连接。
- 创建数据模型
创建一个表示数据库表行的简单 Java类,如 User
,包含对应的属性和 getter/setter 方法。
- 查询数据
使用 Statement
或 PreparedStatement
执行 SQL查询 来获取数据。例如,SELECT * FROM users
将返回所有用户。
- 转换结果集
遍历 ResultSet
,将每一行数据转换为 User
对象,存储在一个列表(如 ArrayList
)中。
- 创建TableView
在 JavaFX的FXML文件 中,定义一个 TableView
控件,并为其设置列。每个列对应 User
类的一个属性,例如 TableColumn
。
- 设置列的显示值工厂
对于每列,你需要设置一个 cellValueFactory
,以决定如何从 User
对象中提取值。例如,usernameCol.setCellValueFactory(cellData -> cellData.getValue().usernameProperty());
- 加载数据到TableView
将步骤4中创建的 User对象 列表传递给 TableView
的 items
属性:tableView.setItems(userList);
- 监听数据变化
如果你希望在 TableView
中修改的数据能保存回数据库,可以添加一个 ChangeListener
监听 TableView
的 items
属性。当数据发生变化时,更新对应的 User
对象,并调用 updateUser
或 insertUser
方法来保存更改。
- 处理用户输入
如果你允许用户在 TableView
中直接编辑,还需要实现 OnEditCommit
事件处理器,以便在用户完成编辑时保存更改。
- 异常处理