使用 Jackcess 读取 Access 文件并使用数据创建 Jtable



我目前正在开发一个Java应用程序,该应用程序读取访问文件并使用收集的数据构建Jtable模型。我以前对 Excel 文件做过同样的事情,但是当我尝试使用 Jackcess 时,它略有不同,我遇到了一些问号。

到目前为止我的工作:

public class AccessModel{
public DefaultTableModel getAccessModel() throws IOException {
    Database db = DatabaseBuilder.open(new File("MyFile.accdb"));
    Vector<String> columnNames = new Vector<String>();
    Vector<String> vector = new Vector<String>();
    Vector<Vector<String>> data = new Vector<Vector<String>>();
    StringBuilder output = new StringBuilder();
            Table table = db.getTable("Table1");
    for (Column column : table.getColumns()) { // get the table column names
        output.append(column.getName());
        output.append("n");
        columnNames.add(column.getName());
    }
    for (Column column : table.getColumns()) { // get the column rows and values
        vector.add(column.getRowValue(table.getNextRow()).toString());
    }
    data.add(vector);
    // return the model to Gui
    DefaultTableModel accessModel = new DefaultTableModel(data, columnNames);
    return accessModel;
    }
}

如您所见,此方法只会通过第一行进行迭代,然后退出循环。我要么因为连续工作 12 个小时而对一个糟糕的解决方案视而不见,要么我正在做一些非常错误的事情。

我偶然发现了一些使用迭代器的半好解决方案,但我无法掌握它的窍门。对此有什么建议吗?还是我应该保持我目前的思路?

  • JTable(视图的值存储在XxxTableModel中,在您的情况下使用DefaultTableModel)是行基Object

  • TableColumn(值存储在TableColumnModel中)将行划分为列

  • 您需要创建两个对象,

    1. Vector<String> columnNames(仅一行)用于Table table = db.getTable("Table1");中的列标识符
    2. 循环内部Table table = db.getTable("Table1");使用Vector<Object> vector = new Vector<Object>();填充二维Vector<Vector<Object>> data = new Vector<Vector<Object>>();,注意1st.代码行insode循环必须vector = new Vector<Object>();,你必须创建一个新的Vector否则你会添加相同的rown_times,最后一个代码行应该是data.add(vector)

.

  • 所有内容(我仍然这么认为)都在 Oracle 教程如何使用表格中描述

最新更新