117

Java プロジェクトから Microsoft Access データベース (.accdb または .mdb ファイル) を操作したいと考えています。JDBC-ODBC Bridge と Microsoft の Access ODBC ドライバーを使用したくない理由は次のとおりです。

  • JDBC-ODBC Bridge は Java SE 8 から削除されており、サポートされていません (参照:こちら)。
  • JDBC-ODBC Bridge は、テキストに U+00FF を超えるコード ポイントを持つ Unicode 文字が含まれている場合、Access ODBC ドライバーで正しく動作しません (参照:こちら)。そのため、このような設定では、ギリシャ語、ロシア語、中国語などの文字を処理できません。 、アラビア語など、
  • Microsoft の Access ODBC ドライバーは Windows でのみ動作します。
  • Access データベース エンジン (および ODBC ドライバー) には 32 ビット バージョンと 64 ビット バージョンが別々に存在するため、展開が煩わしい場合があります。

UCanAccessという名前の Access データベース用の JDBC ドライバーについて言及している他の回答を見てきました。このアプローチを使用するように Java プロジェクトを設定するにはどうすればよいですか?

(Java から Access データベースを操作するためのより良い方法を提案する回答も大歓迎です。)

4

1 に答える 1

166

UCanAccessは、ODBC を使用せずに Access データベースから読み書きできるようにする純粋な Java JDBC ドライバーです。これらのタスクを実行するために、 JackcessHSQLDBという他の 2 つのパッケージを使用します。以下に、セットアップ方法の簡単な概要を示します。

 

オプション 1: Maven を使用する

プロジェクトがMavenを使用している場合は、次の座標を介して UCanAccess を簡単に含めることができます。

groupId : net.sf.ucanaccess
artifactId: ucanaccess

以下は からの抜粋です。最新のリリースを取得するにはpom.xml、 を更新する必要がある場合があります。<version>

  <dependencies>
    <dependency>
        <groupId>net.sf.ucanaccess</groupId>
        <artifactId>ucanaccess</artifactId>
        <version>4.0.4</version>
    </dependency>
  </dependencies>

 

オプション 2: JAR をプロジェクトに手動で追加する

前述のように、UCanAccess には Jackcess と HSQLDB が必要です。Jackcess には独自の依存関係があります。したがって、UCanAccess を使用するには、次のコンポーネントを含める必要があります。

UCanAccess (ucanaccess-xxxjar)
HSQLDB (hsqldb.jar、バージョン 2.2.5 以降)
Jackcess (jackcess-2.xxjar)
commons-lang (commons-lang-2.6.jar、または新しい2.x バージョン)
commons-logging ( commons-logging-1.1.1.jar、または新しい1.x バージョン)

幸いなことに、UCanAccess の配布ファイルには、必要なすべての JAR ファイルが含まれています。解凍すると、次のようなものが表示されます

ucanaccess-4.0.1.jar  
  /lib/
    commons-lang-2.6.jar  
    commons-logging-1.1.1.jar  
    hsqldb.jar  
    jackcess-2.1.6.jar

必要なことは、プロジェクトに5 つの JAR をすべて追加することだけです。

注:他の 5 つの JAR ファイルを追加する場合は、ビルド パスに追加しないでください。loader/ucanload.jarこのUcanloadDriverクラスは特別な状況でのみ使用され、別の設定が必要です。詳細については、関連する回答を参照してください

Eclipse:パッケージ エクスプローラーでプロジェクトを右クリックし、 を選択しますBuild Path > Configure Build Path...。[外部 JAR を追加...] ボタンをクリックして、5 つの JAR をそれぞれ追加します。完了すると、Java ビルド パスは次のようになります。

BuildPath.png

NetBeans:プロジェクトのツリー ビューを展開し、[ライブラリ] フォルダを右クリックして [JAR/フォルダを追加...] を選択し、JAR ファイルを参照します。

nbAddJar.png

5 つの JAR ファイルをすべて追加すると、"Libraries" フォルダは次のようになります。

nbLibraries.png

IntelliJ IDEA:File > Project Structure...メイン メニューから選択します。[ライブラリ] ペインで [追加] ( +) ボタンをクリックし、5 つの JAR ファイルを追加します。それが完了すると、プロジェクトは次のようになります。

IntelliJ.png

 

それでおしまい!

次のようなコードを使用して、.accdb ファイルと .mdb ファイルの "U Can Access" データにアクセスできるようになりました

// assumes...
//     import java.sql.*;
Connection conn=DriverManager.getConnection(
        "jdbc:ucanaccess://C:/__tmp/test/zzz.accdb");
Statement s = conn.createStatement();
ResultSet rs = s.executeQuery("SELECT [LastName] FROM [Clients]");
while (rs.next()) {
    System.out.println(rs.getString(1));
}

 

開示

この Q&A を書いている時点では、私は UCanAccess プロジェクトに関与も提携もしていません。私はちょうどそれを使用しました。それ以来、私はプロジェクトの貢献者になりました。

于 2014-02-22T13:55:31.667 に答える