2

一部のコードを更新しようとしているときに、非常に厄介な問題に遭遇しました。問題のコードは、ローカルの MS アクセス ファイル (*.mdb) からいくつかの (実際には多くの) 情報を読み取り、このデータに対していくつかの操作を実行します (単純なものです)。私はデータベースを読むだけでよいことに注意してください。

問題は、このプログラムを x64 オペレーティング システム (主に win7) で動作するように展開しようとしているのに、32 ビット ODBC ドライバーにアクセスできないことです。

これは、データベースにアクセスするコードの一部です。変数「パス」は、mdb ファイルへの絶対パスを含む文字列です。前述のとおり、このファイルはローカルです。

public void openConection()
{
    try
    {
        Properties props = new Properties();
        props.put ("charSet", "ISO-8859-1");
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String dbURL = "jdbc:odbc:Driver={Microsoft AccessDriver (*.mdb)};DBQ=";
        dbURL += this.path + ";DriverID=22;READONLY=false)";
        this.connection = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft AccessDriver (*.mdb)};DBQ=" + this.path, props);
        this.statement = this.connection.createStatement();
        System.out.println("Success");
    }catch(Exception e)
    {
            System.out.println("Error :" + e);
    }
}

これにより、次のエラーがスローされます。

[Microsoft][ODBC Driver Manager] データ ソース名が見つからず、既定のドライバーが指定されていません

問題は(私が知る限り)次のコードにあります。

("jdbc:odbc:Driver={Microsoft AccessDriver (*.mdb)};DBQ=" + this.path, props

私が正しければ、これは Java jdbc を MS Access ODBC にブリッジしようとします。これは 32 ビット ドライバーであり、プログラムからアクセスできません。私は自分の問題をグーグルで検索しようとしましたが、役立つものは何も見つかりませんでした。64 ビットの MS Access ドライバーは見つかりましたが、32 ビット バージョンの Office をアンインストールする必要がありました。

また、このプログラムは、その方法を知らない多くの人に提供する必要があるため、DSN を作成する必要は避けたいと思います。

ありがとう。

ゼグピ

4

1 に答える 1

3

Java API を使用して、ファイルから直接読み取ることができます。そこにはいくつかのライブラリがあります。

Jackcessを試すことができます。それは無料です。

于 2012-09-24T21:12:42.393 に答える