尝试使用Jackcess(Java)从Access读取时“不支持整理排序顺序”

我目前正在开发一个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:

  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文件的旧版本进行了测试,但问题仍然存在。

这是图书馆相关的问题吗? 还是我错过了别的什么?

当数据库使用“常规”排序顺序时,Jackcess仅支持Access数据库中文Text字段的索引(参见: 此处 )。

根据相关的Microsoft Office支持页面 :

要重置现有数据库的排序顺序,请选择要使用的语言,然后对数据库运行压缩操作。

因此,对于Access 2010,可能意味着从Accessfunction区栏中选择“ File > Options ”,在“常规”选项卡上为“新数据库排序顺序”选择“常规”或“常规 – 旧版”,…

截图

…然后在数据库上执行“压缩和修复”。

注意:如果Windows使用的是非英语语言环境,则上述过程可能无法解决问题。 请参阅此答案了解详情。