AccessデータベースにJavaで接続【UCanAccess】※VSCodeで実行できるまで設定


目的

MS AccessのデータベースにJavaでアクセスします。
その際UCanAccessというJDBCドライバを使用すると良いみたいなので導入してみます。

また、筆者がJavaの開発でVSCodeを使用しているため、こちらで実行できるまで設定してみます。

前提条件

次の環境を前提とします。

  • JDK15(少なくとも8)
  • MS Access 2016
  • VSCode

もしVSCodeで開発しないのならVSCodeは必須ではありません。
VSCodeで開発する際はVSCodeでJavaの開発が行える設定をする必要があります。
VSCodeでJava開発は別途解説していますのでこちらを参照してください。
Java15の導入とVSCode環境設定

UCanAccessの導入

UCanAccessはAccessに接続するためのJDBCの一種です。

JDBCとは
Javaがデータベースに接続するためのライブラリでJDKに同梱されています。
これに今回のUCanAccessなどの外部ライブラリを加えることにより、Access, MySQL等のデータベース製品に接続できるわけです。
外部ライブラリは製品ごとに存在しています。

UCanAccessのダウンロード

こちらからダウンロードします。
https://sourceforge.net/projects/ucanaccess/files/

「Download Latest Version」を選択しUCanAccess-5.0.0-bin.zipをダウンロードします。

UCanAccessのフォルダ配置

ダウンロードしたzipを解凍します。
その後フォルダごとわかりやすい場所に移動します。
今回はC:\Program Files\UCanAccess-5.0.0-binに配置しました。

Accessの設定

続いてAccessの設定に入ります。
Accessを開いて「オプション」を選択して下さい。

オプションの「全般」を開きます。

このように新規データベースの並び順序が「日本語 - レガシー」になっていることを確認してください。
もし、なってなかったら変更してください。

Accessの設定はこれで完了です。

サンプルデータベースを作成

Javaから接続させるデータベースを作成します。

このように作成してみました。

また、このデータベースのファイルのパスを記憶しておいてください。
今回は以下のようなパスに保存しました。
C:\Users\kazus\Documents\sample.accdb

付属のコンソールツールでテスト

さて、UCanAccessにはコンソールツールが付属しています。
これはCLIによってAccessに接続できるツールです。

実行するにはUCanAccessのフォルダの中にあるconsole.batを実行します。
するとコマンドプロンプトが起動しますので、ここにAccessデータベースのフルパスを入力することで以降SQLを投げることができます。
やってみましょう。

このようにデータベースの操作ができました!
※終了するにはCtrl+Cキーです。

VSCodeのJavaプロジェクトで使用

コンソールツールでUCanAccessが使えることが分かりましたので、いよいよVSCodeの設定に入っていきます。

Javaプロジェクトを作成

まず、VSCode上でJavaプロジェクトを作成してください。
Ctrl+Shift+PキーからJava: Create Java Project...で作成できます。

コーディング

Accessデータベースに接続するコードを作成しておきましょう。

App.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class App {
    public static void main(String[] args) throws Exception {
        try {
            Connection conn = DriverManager.getConnection("jdbc:ucanaccess://C:/Users/kazus/Documents/sample.accdb");
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery("select * from users");
            while (rs.next()) {
                System.out.println(rs.getString("user_name"));
            }
            rs.close();
            st.close();
            conn.close();
        } catch (SQLException e) {
            System.out.println("error");
        }
    }
}

JavaプロジェクトにUCanAccessのライブラリを追加

プロジェクトのReferenced LibrariesにUCanAccessの.jarを追加します。

このように+から追加できます。
なお、追加する.jarは以下の通りです。

  • UCanaccess-5.0.0.jar
  • lib/配下にある次の4つ
    • commons-lang3-3.8.1.jar
    • commons-logging-1.2.jar
    • hsqldb-2.5.0.jar
    • jackcess-3.0.1.jar

追加したら念のためVSCodeを再起動しておいてください。

いざ実行

▶で実行をしてみましょう。

このように実行できました!