尝试使用Jackcess(Java)从Access读取时出现“unsupported collating sort order”错误

3

我正在开发一个Java应用程序,使用Jackcess开源库来读取Microsoft Access文件。这个Java应用程序稍后将呈现包含在Access文件中的表格。

以下是我迄今为止的代码:

public class Test {

    public static void main(String[] args) throws IOException {

        File file = new File("\\\\student.local\\Files\\Home\\nat12mja\\Downloads\\Testdoc.accdb");
        Database db = DatabaseBuilder.open(file);

        Table table = db.getTable("Table1");

        for(Row row : table){
            System.out.println(row.get("Field1"));
        }    

    }
}

这是我的导入:

    import java.io.File;
    import java.io.IOException;
    import com.healthmarketscience.jackcess.Database;
    import com.healthmarketscience.jackcess.DatabaseBuilder;

此外,我已将这些Jar文件添加到我的引用库中:
commons-lang-2.4.jar、commons-logging-1.1.jar、jackcess-2.0.2.jar 当我运行应用程序时,我得到了以下错误消息(System.out.println()按预期工作):
    dec 21, 2013 1:54:27 EM com.healthmarketscience.jackcess.impl.IndexData setUnsupportedReason
    WARNING: unsupported collating sort order SortOrder[1053(0)] for text index, making read-only
    dec 21, 2013 1:54:27 EM com.healthmarketscience.jackcess.impl.DatabaseImpl readSystemCatalog
    INFO: Could not find expected index on table MSysObjects

我已经测试了同一个Access文件的旧版本,但问题仍然存在。

这是与库相关的问题吗?还是我漏掉了其他什么东西?


为什么不使用JDBC呢?肯定有一个MS-Access的驱动程序。 - Philipp Sander
我也在做这个。但是我希望两者都能够工作。 - Marcus
1个回答

5
只有当Access数据库使用“General”排序顺序时,Jackcess才支持对Text字段上的索引(参考:这里)。
根据相关的Microsoft Office支持页面
要重置现有数据库的排序顺序,请选择要使用的语言,然后在数据库上运行压缩操作。
因此,对于Access 2010,这可能意味着从Access功能区中选择文件>选项,在“常规”选项卡上为“新建数据库排序顺序”选择“常规”或“常规 - 旧版”, screenshot 然后在数据库上执行“压缩和修复”。
注意:如果Windows使用的是非英语环境,则上述过程可能无法解决问题。有关详细信息,请参见此答案

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接