2013-12-21 129 views
3

我目前正在使用使用Jackcess開源庫讀取Microsoft Access文件的purpuose的Java應用程序。 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 

我與舊版本相同的訪問文件的測試,但問題依然存在。

這是一個圖書館相關的問題?還是我錯過了別的?

+0

你爲什麼不使用jdbc?必須有一個ms-access的驅動程序 –

+0

我正在處理這個問題。我希望兩者都能工作。 – Marcus

回答

5

當數據庫使用「常規」排序順序(參考:here)時,Jackcess僅支持Access數據庫中Text字段的索引。

根據相關Microsoft Office support page

要重置的排序順序現有的數據庫,選擇您要使用,然後在數據庫上運行壓縮操作的語言。

因此,對於Access 2010中,將可能意味着從Access功能導航欄選擇File > Options,選擇「一般」或「一般 - 遺產」的「常規」選項卡上的「新建數據庫排序次序」,.. 。

screenshot

...然後執行數據庫的 「壓縮和修復」。

注意:如果Windows使用的是非英文語言環境,則上述過程可能無法解決問題。詳情請參閱this answer

+0

這解決了我的問題。非常感謝你的幫助! – Marcus