用于大型数据库表的 JavaFx TableView CRUD

Posted

技术标签:

【中文标题】用于大型数据库表的 JavaFx TableView CRUD【英文标题】:JavaFx TableView CRUD for large database tables 【发布时间】:2014-05-07 05:17:24 【问题描述】:

我正在寻找用于在 JavaFx TableView 中显示大表的示例应用程序或文档,而无需事先将整个表加载到内存中。 CRUD 功能也不错,不过如果需要我可以自己编写。

我发现的所有示例都将数据预加载到一个可观察的列表中(我假设在内存中),对于 500 万条记录,我无法做到这一点!

我曾在 Java Swing 中使用从 JDBC ResultSets 获取数据的表模型,我可以为 JavaFx TableView 做类似的事情吗?我还在 Swing 中添加了自己的排序和列布局持久性,并希望在 JavaFx 中做类似的事情。

这可能是一个“初学者”问题,或者我在浏览 JavaFx 信息时可能遗漏了一些简单的问题。

【问题讨论】:

看看datafx framework 看看是否有帮助。 我在发布问题之前确实找到了 DataFx,文档/示例很薄,从类的描述来看,有一个 JDBC 数据源类,它的超类只有一个 get() 和 next( ),没有一种 seek 或 getrowat(x,y),所以它有点让我相信图书馆将所有内容读入内存。不过,我还没有查看源代码来验证这一点,所以如果有人知道更多,请在此处发表评论! 【参考方案1】:

每个 TableView 都必须有一个模型类。您可以轻松地将模型类设置为表格视图。

例如,您的学生班级 (id,name,avg)

定义一个学生的 ObservableList 就像

ObservableList<Student> stdList = FXCollections.observableArrayList();

然后通过

将列表设置为表格视图
tableView.setDate(stdList);

现在你可以在列表中做任何你想象的事情(CRUD)。

【讨论】:

这并没有真正解决不必将所有记录加载到内存中的问题。我也认为 .setDate() 不是你想要的。

以上是关于用于大型数据库表的 JavaFx TableView CRUD的主要内容,如果未能解决你的问题,请参考以下文章

更新和删除不适用于使用 JAVAFx 的 mysql 数据库

用于优化分区 MySQL 表的磁盘使用情况

javafx 中的 Long 和 Object 值应该使用啥类型的字段

数据透视表:由于临时表而处理大型 CommandText

从文本字段中提取空数据。表已填充,但无法检索对象。 Java/JavaFX

大型单表的 MySQL 查询优化 [关闭]