Apache DerbyをEclipse上で使う方法

# はじめに

以前に書いた[【Eclipse】DBViewerのインストール](https://qiita.com/nkojima/items/2a865b819071e7943761)の続きとして、DBViewerを使ってApache Derbyを使う方法をまとめてみました。

# Apache Derbyとは

* Javaで作られたRDBMS。
* OracleやMySQLのような「クライアント/サーバーモード」と、SQLiteのような「組み込みモード」の両面を併せ持つ。

# Apache Derbyの用意

## ダウンロード

* [Apache Derbyのサイト](https://db.apache.org/derby/)から、JARファイルをダウンロードします。
* [ダウンロードページ](https://db.apache.org/derby/derby_downloads.html)を見ると、Javaのバージョンに応じて利用可能なApache Derbyのバージョンが異なるため、手元のJavaのバージョンを確認した上でダウンロードします。
 * 私の場合は手元のJavaのバージョンがJava8だったので、Apache Derby-10.14.2.0をダウンロードしました。

## インストール

* ZIPファイルを展開して、所望のフォルダに配置します。
 * 今回は`C:\Program Files`以下に配置しました。
* 今回はPATHを通すなどの作業は特に行いませんでした。

# Eclipse上での設定

## DBの登録

* DBViewerのパースペクティブを開いて、［DBViewerPlugin］を右クリックして［登録］を選択します。

![Derby_DBViewer_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/d37c6158-8ab6-2a8a-b82a-edc0206c2166.png)

* ［データベース定義 - データベース定義の登録］という画面が開いたら、任意の定義名を入力します。
* 続けて［ファイルの追加］をクリックして、JDBCドライバーとして先程に配置したApache Derby（derby.jar）のパスを設定します。

![Derby_DBViewer_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/01cc5362-4c3f-7197-3269-f2177465b4f4.png)

* ［データベース定義 - 接続情報の設定］という画面では、JDBCドライバのタイプを選択します。
 * 今回は組み込みモードで動作させるため、`org.apache.derby.jdbc.EmbeddedDriver`を選択しました。
* 次に接続文字列を作成しますが、ドライバタイプを選択した時に雛型が出来上がるので、あとはDB用のフォルダだけ指定します。
 * 今回は`C:\Users\NKOJIMA\DerbyTest`をDB用のフォルダとして指定しました。
 * また、スクショ上では`create=true`と書かれていますが、これは指定したフォルダが存在しない時に指定します。

![Derby_DBViewer_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/8dd9a219-c7e3-26e3-7436-0c3367317487.png)

## DBへの接続

* 再びDBViewerのパースペクティブに戻り、先程に作成した`DerbyTest`を選択して［接続］をクリックします。

![Derby_DBViewer_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/449f110e-0b2d-6981-b3d8-8e3647c4e28a.png)

* DBへの接続が成功すると、以下の図のようにDB内のスキーマを一覧表示することが出来ます。

![Derby_DBViewer_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/c4625921-6fb0-4bcc-2ceb-7576ddfe8333.png)

## DBの利用

* DBViewerのパースペクティブで下側（右下）に位置する［SQL実行・ビュー］タブを開いて、スキーマを作成します。

![Derby_DBViewer_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/beb846b7-b062-4610-9d4f-669f48f06718.png)

* スキーマの作成が成功すると、以下の図のように作成したスキーマが表示されます。

![Derby_DBViewer_06-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/895427f1-b18d-c3b7-b580-9461caf17cc8.png)

* 続けてテーブルを作成します。

![Derby_DBViewer_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/1e427c5b-d4f0-b426-de28-9306874b8bb1.png)

* なお、Apache Derbyで利用できる代表的なデータ型は以下の表のとおりです。
 * [Derby Reference Manual - Apache Derby 10.14](https://db.apache.org/derby/docs/10.14/ref/index.html)を参照しました。

|データ型|値の範囲|備考|
|---|---|---|
|[INTEGER](https://db.apache.org/derby/docs/10.14/ref/rrefsqlj10696.html)|-2147483648～2147483647||
|[DOUBLE](https://db.apache.org/derby/docs/10.14/ref/rrefsqlj42002.html)|-1.7976931348623157E+308～1.7976931348623157E+308||
|[VARCHAR](https://db.apache.org/derby/docs/10.14/ref/rrefsqlj41207.html)|最大32,672文字まで||
|[DATE](https://db.apache.org/derby/docs/10.14/ref/rrefsqlj18730.html)|－|java.sqlで認識される任意の日付|
|[TIME](https://db.apache.org/derby/docs/10.14/ref/rrefsqlj21908.html)|－|java.sqlで認識される任意の時刻|
|[TIMESTAMP](https://db.apache.org/derby/docs/10.14/ref/rrefsqlj27620.html)|－|DATEとTIMEを合わせた値（日時）|

* テーブルが作成されると、以下の図のように作成したテーブルの定義を見ることが出来ます。

![Derby_DBViewer_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/5a26ba3f-0fb8-8e68-f9ce-0d138fa788ef.png)

* 作成したテーブルを選択した状態で、DBViewerのパースペクティブの右側（右上）のパネルにある［＋］をクリックすることで、手入力でレコードを追加することが出来ます。

![Derby_DBViewer_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/316de35c-004f-6ee9-7ab8-e6d2d038068e.png)

* データが入力されるとこのように表示されます。
 * 下側（右下）に位置する［SQL実行・ビュー］タブにSELECT文を書けば、入力したデータを検索することも可能です。

![Derby_DBViewer_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/c436df55-9edf-f45b-b36d-3c21f58ed760.png)
[【Eclipse】DBViewerのインストール](https://qiita.com/nkojima/items/2a865b819071e7943761)


# 参考URL

* [【Eclipse】DBViewerのインストール](https://qiita.com/nkojima/items/2a865b819071e7943761)
* [Derby Reference Manual - Apache Derby 10.14](https://db.apache.org/derby/docs/10.14/ref/index.html)