首页 > 解决方案 > 在 UCanAccess 中使用 order by 订购 ID

问题描述

我正在使用 ucanaccess 将我的数据库链接到我的代码,但是每当我运行它时,它都不会像我想要的那样工作,即使它甚至可以运行。我只想使用 ORDER BY ID 将主键 (ID) 重新排序为数字顺序;。当我编辑数据库时,它不会在我运行该方法时重新排序,它只是将编辑后的 ​​ID 推到底部并在那里对它们进行排序。如果我应该使用数组排序来重新组织整个表,我也很困惑?任何帮助表示赞赏。每当我尝试在 GUI 中编辑表时,它都会运行。

源代码谷歌驱动

public void reorder()
{


for(int i = 0 ; i < size - 1;i++)
{        
    for(int j = i+1 ; j< size;j++)
    {
        if(launch[i].getID() > launch[j].getID())
        {
            Launch temp = launch[i];
            launch[i] = launch[j];
            launch[j] = temp;
            System.out.println(launch[i]);                
        }
    }
}
}
public void orderByID()
{                   
    String sql = "SELECT * FROM LaunchPriceList ORDER BY ID DESC"; 
    try
    {          
      dbman.updateQuery(sql);
      //reorder();
    }
    catch(SQLException e)
    {
        System.out.println("Error Order by: " + e);
    }
}

标签: javaarrayssortingsql-order-byucanaccess

解决方案


我无法访问您的代码(无论 n/w 限制如何)。话说回来...

您可以通过扩展AbstractTableModel创建TableModel的自定义实现开始

在填充 TableModel 时,您首先遍历结果集并创建一个带有自定义Comparator的 TreeSet,该 Comparator比较 ID 属性。

完成后,您可以使用先前填充的表模型创建表。例如

JTable t = new JTable(model);

使用刷新的数据更新 TableModel 将自动刷新表。


推荐阅读