JTable TableRowSorter还是重新查询MySQL DB?

时间:2011-05-31 07:13:17

标签: java mysql jdbc jtable

使用JDBC和MySQL我在JTable中显示MySQL表。 目前,只要我的Java应用程序启动,就会查询数据库表以查找所有结果(例如SELECT * FROM tableExample),然后由JTable显示。

我的问题是,如果我想应用一个过滤器(或两个),最好重新查询MySQL表并更新JTable,还是更好地使用TableRowSorter()?

目前我的表包含约23,000个结果。

此外,如果有人建议或编码如何从新查询更新JTable,我将非常感激。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您的问题有很多解决方法,例如Table From DatabaseResultSet Table

在这个论坛中搜索,

使用ResultSetTableModel在Google上搜索

它可以告诉哪种解决方法更好,

但是Currently my table contains ~23,000 results.可以更好地减少SQL语句中的行数,

答案 1 :(得分:1)

每个JTable都有一个TableModel来保存它的数据。默认实现是DefaultTableModel,但您可以实现自己的,具体取决于您要使用的过滤器。如果再次查询数据库,可以在TableModel上设置数据或在JTable上设置TableModel的新实例。

model = new DefaultTableModel();
table = new JTable(model);

...query the database, do either:
model.setDataVector(...);
table.setModel(new DefaultTableModel(...));

问题是,查询数据库或进行客户端过滤/排序是否更好无法得到普遍回答。这取决于您的环境和用例。如果从远程数据库进行查询,那么进行客户端过滤可能会更好,因为传输23k行数据需要很长时间。如果您的客户端是一台相当慢的机器,那么在数据库中进行排序可能比在Java中进行排序要快。如果这些资源不是问题,请使用您更熟悉的解决方案。在Java中进行排序比在SQL中进行更多的工作,另一方面,当使用Java实现时,过滤更加通用。