使用JDBC和MySQL我在JTable中显示MySQL表。 目前,只要我的Java应用程序启动,就会查询数据库表以查找所有结果(例如SELECT * FROM tableExample),然后由JTable显示。
我的问题是,如果我想应用一个过滤器(或两个),最好重新查询MySQL表并更新JTable,还是更好地使用TableRowSorter()?
目前我的表包含约23,000个结果。
此外,如果有人建议或编码如何从新查询更新JTable,我将非常感激。
提前致谢。
答案 0 :(得分:1)
您的问题有很多解决方法,例如Table From Database或ResultSet 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实现时,过滤更加通用。