[解決済み] ODBCを使わずにJavaからAccessデータベースを操作する
質問
Java プロジェクトから Microsoft Access データベース (.accdb または .mdb ファイル) を操作したいと思っています。私は、MicrosoftからのJDBC-ODBCブリッジとAccess ODBCドライバを使用したくないのですが、なぜでしょうか。
- JDBC-ODBC Bridge は Java SE 8 から削除され、サポートされていない (参考文献: JDBC-ODBC Bridge は Java SE 8 から削除され、サポートされていない)。 ここで ),
- テキストに U+00FF 以上のコード ポイントを持つ Unicode 文字が含まれる場合、JDBC-ODBC Bridge は Access ODBC ドライバと正しく動作しません (参考: JDBC-ODBC Bridge は Access ODBC ドライバと正しく動作しません。 ここで ) を含むテキストでは Access ODBC ドライバーを正しく動作させないため、このような設定ではギリシャ語、ロシア語、中国語、アラビア語などの文字を処理できません。
- Microsoft の Access ODBC ドライバは Windows でのみ動作し、
- Access Database Engine (および ODBC ドライバー) には 32 ビット版と 64 ビット版があり、展開の際に邪魔になることがある。
他の回答で、Access データベース用の JDBC ドライバーの名前に言及されているのを見たことがあります。 UCanAccess . この方法を使用するために、どのように私のJavaプロジェクトをセットアップすることができますか?
(JavaからAccessデータベースを扱うより良い方法を提案する回答も大歓迎です)。
どのように解決するのですか?
UCanAccess は純粋なJava JDBCドライバで、ODBCを使用せずにAccessデータベースからの読み取りとAccessデータベースへの書き込みを可能にします。他に2つのパッケージを使用します。 Jackcess と HSQLDB を使用して、これらのタスクを実行します。以下に、その設定方法を簡単に説明します。
オプション 1: 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-x.x.x.jar)です。
HSQLDB
(hsqldb.jar, バージョン 2.2.5 またはそれ以降)
ジャックプロセス
(jackcess-2.x.x.jar)
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をプロジェクトに追加するだけです。
注意 ではなく 追加
loader/ucanload.jar
をビルドパスに追加してください。その際UcanloadDriver
クラスは特殊な状況でのみ使用され、別のセットアップが必要です。関連する回答を参照してください。 はこちら をご覧ください。
Eclipseです。
パッケージ・エクスプローラーでプロジェクトを右クリックし
Build Path > Configure Build Path...
. Add External JARs..."ボタンをクリックして、5つのJARをそれぞれ追加します。完了すると、Java Build Pathは次のようになります。
NetBeansです。 プロジェクトのツリービューを展開し、"Libraries"フォルダを右クリックして、"Add JAR/Folder..." を選択して、JAR ファイルを参照する。
5 つの JAR ファイルをすべて追加すると、quot;Libraries" フォルダーは次のような外観になるはずです。
IntelliJ IDEAです。
選択
File > Project Structure...
を選択します。ライブラリ]ペインで[追加]ボタン(
+
) ボタンをクリックして、5 つの JAR ファイルを追加します。これで、プロジェクトは次のようになります。
それだ!
これで、次のようなコードを使って、.accdb や .mdb ファイルにあるデータにアクセスできるようになりました。
// 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 プロジェクトとは何の関係もなく、ただそれを使っていただけです。その後、私はこのプロジェクトの貢献者になりました。
関連
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
Java Notes 005_この行に複数のマーカーがある - キーを変数に解決できない - シンタックスエラー、ins
-
Java:未解決コンパイル問題の解決方法
-
Java の double データ型における 0.0 と -0.0 の問題
-
java 365*1000*60*60*24 計算問題
-
htmlとwordの相互変換の実装(画像あり)
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
Javaでよくある構文エラー
-
プロジェクトの依存関係を解決できない。
-
ブートレイヤーの初期化中にエラーが発生しました java.lang.module.FindException: モジュールが見つかりません
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
-bash: java: コマンドが見つからない 解決方法
-
Junitのユニットテストはjava.lang.Testを報告します。
-
eclipse にリソースリーク:'in' が閉じない
-
org.xml.sax.SAXParseExceptionのエラー解決方法
-
Java の double データ型における 0.0 と -0.0 の問題