【问题标题】:JTable TableRowSorter or Re-query MySQL DB?JTable TableRowSorter 还是重新查询 MySQL 数据库?
【发布时间】:2011-05-31 07:13:16
【问题描述】:

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

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

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

另外,如果有人提供有关如何从新查询更新 JTable 的建议或代码示例,我将不胜感激。

提前致谢。

【问题讨论】:

    标签: java mysql jdbc jtable


    【解决方案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 中实现时,过滤更加通用。

    【讨论】:

      【解决方案2】:

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

      也可以在这个论坛搜索,

      使用 ResultSetTableModel 在 google 上搜索,

      很难判断哪种解决方法更好,

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-15
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 2012-05-01
        相关资源
        最近更新 更多