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環境設定](https://qiita.com/kazushi47/items/58e00d0ea6513e067a02)

# 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`をダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/961112/20999bca-deb7-0ae4-901b-37e9832ddf7f.png)

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

# Accessの設定
続いてAccessの設定に入ります。
Accessを開いて「オプション」を選択して下さい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/961112/a2106f09-b5b8-fadf-ab66-61aab1a6e978.png)
オプションの「全般」を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/961112/4f07bd29-861c-7a61-5768-ec530be1ebae.png)
このように新規データベースの並び順序が「日本語 - レガシー」になっていることを確認してください。
もし、なってなかったら変更してください。

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

# サンプルデータベースを作成
Javaから接続させるデータベースを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/961112/ed937a71-66f8-101e-edac-b954cba80dad.png)
このように作成してみました。

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

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

実行するにはUCanAccessのフォルダの中にある`console.bat`を実行します。
するとコマンドプロンプトが起動しますので、ここにAccessデータベースのフルパスを入力することで以降SQLを投げることができます。
やってみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/961112/80387b66-859c-348c-be7e-91631c63acd7.png)
このようにデータベースの操作ができました！
※終了するには`Ctrl+C`キーです。

# VSCodeのJavaプロジェクトで使用
コンソールツールでUCanAccessが使えることが分かりましたので、いよいよVSCodeの設定に入っていきます。

## Javaプロジェクトを作成
まず、VSCode上でJavaプロジェクトを作成してください。
`Ctrl+Shift+P`キーから`Java: Create Java Project...`で作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/961112/b0ad76dc-4dbb-4a0c-b58a-c39cea3daa86.png)

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

```java: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を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/961112/2783b7b4-62fd-45e7-d2b4-596c93ca91d9.png)
このように`+`から追加できます。
なお、追加する.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を再起動しておいてください。

## いざ実行
▶で実行をしてみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/961112/f2e05ad6-1a91-c2de-b338-cfaa8617f0c1.png)
このように実行できました！