3

私は現在、Jackcess オープン ソース ライブラリを使用して Microsoft Access ファイルを読み取ることを目的とした 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

同じ Access ファイルの古いバージョンでテストしましたが、問題は解決しません。

これはライブラリ関連の問題ですか? それとも、他に何か不足していますか?

4

1 に答える 1

5

データベースが「一般」ソート順を使用している場合、 JackcessTextは Access データベースのフィールドのインデックスのみをサポートします (参照:こちら)。

関連するMicrosoft Office サポート ページによると:

既存のデータベースの並べ替え順序をリセットするには、使用する言語を選択してから、データベースで圧縮操作を実行します。

したがって、Access 2010 の場合、おそらくFile > OptionsAccess のリボン バーから選択し、[全般] タブの [新しいデータベースの並べ替え順序] で [全般] または [全般 - レガシー] を選択することを意味します。

スクリーンショット

...次に、データベースで「圧縮と修復」を実行します。

注: Windows が英語以外のロケールを使用している場合、上記の手順では問題が解決しない場合があります。詳細については、この回答を参照してください。

于 2013-12-21T14:25:59.137 に答える