Apache Derbyメモ

お気軽DBのApache Derbyを、Eclipseプラグイン版でさわってみる。
JDK:1.4.2
Eclipse:3.1.1

準備

1.インストール
derby_core_plugin_10.1.2、derby_ui_plugin_1.1.0.zipをEclipseにインストール。


2.Derby化?
適当にプロジェクトを選択して、右クリ→Apache Derby→Add Apache Derby natureを選択。
パスにDerbyのjarが通される。


3.サーバの起動
プロジェクトを右クリ→Apache Derby→Start Derby Network Serverを選択。


4.コンソールから接続&DB作成
プロジェクトを右クリからijを起動する。ij=Derbyのコンソールらしい。
以下のように打つ。


connect 'jdbc:derby://localhost:1527/testDb;create=true;user=hoge;password=foo';
create=trueとすると、指定した名前のDBがない場合に作成してくれるらしい。
ユーザ、パスは適当。なくても大丈夫っぽい。

さわる

ijからさわる。
create tableでテーブル作成後、いろいろいじった。
select, insert, delete, updateあたりは動く(当たり前)。
truncateはないらしい。


SELECT * FROM SYS.SYSTABLES;
とかで、システム関連の情報が見れる。
SYSスキーマに色々情報があるらしい。

Javaでさわる。

こんな感じ。Utilsはご想像の通り。


public static void main(String[] args) {
Connection conn = null;
ResultSet rs = null;
Statement stmt = null;

try {
Class.forName("org.apache.derby.jdbc.ClientDriver");
conn = DriverManager.getConnection("jdbc:derby://localhost:1527/testDb");

stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT TABLEID, TABLENAME FROM SYS.SYSTABLES");
while (rs.next()) {
int i = 1;
String tableId = rs.getString(i++);
String tableName = rs.getString(i++);
System.out.println(tableId + " : " + tableName);
}

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
Utils.releaseResultSet(rs);
Utils.releaseStatement(stmt);
Utils.releaseConnection(conn);
}
}
単なるJavaソースだな。
まぁ特に珍しいことをやる気もないし。


んで実行結果


80000010-00d0-fd77-3ed8-000a0a0b1900 : SYSCONGLOMERATES
80000018-00d0-fd77-3ed8-000a0a0b1900 : SYSTABLES
8000001e-00d0-fd77-3ed8-000a0a0b1900 : SYSCOLUMNS
80000022-00d0-fd77-3ed8-000a0a0b1900 : SYSSCHEMAS
8000002f-00d0-fd77-3ed8-000a0a0b1900 : SYSCONSTRAINTS
80000039-00d0-fd77-3ed8-000a0a0b1900 : SYSKEYS
8000003e-00d0-fd77-3ed8-000a0a0b1900 : SYSDEPENDS
c013800d-00d7-ddbd-08ce-000a0a411400 : SYSALIASES
8000004d-00d0-fd77-3ed8-000a0a0b1900 : SYSVIEWS
80000056-00d0-fd77-3ed8-000a0a0b1900 : SYSCHECKS
8000005b-00d0-fd77-3ed8-000a0a0b1900 : SYSFOREIGNKEYS
80000000-00d1-15f7-ab70-000a0a0b1500 : SYSSTATEMENTS
80000000-00d3-e222-873f-000a0a0b1900 : SYSFILES
c013800d-00d7-c025-4809-000a0a411200 : SYSTRIGGERS
f81e0010-00e3-6612-5a96-009e3a3b5e00 : SYSSTATISTICS
c013800d-00f8-5b70-bea3-00000019ed88 : SYSDUMMY1
80220011-010b-1371-2bb2-00000000002e : FIRSTTABLE

おわり

HSQLDBよりしっかりしてるイメージ。XAがあるようだし。
でも、プラグイン版でijを立ち上げた後にいちいちconnectすんのがめんどくさい。
HSQLDBもそうっぽいけど、なんでシーケンスがないんだろー。


どうやら、組み込みで使えるようだ。
プログラム内で、DB起動→DB作成→データ入れまくりとかできちゃうみたい。
使うことあるかなぁ。

    • 追記

うほっ、HSQLDBシーケンスできてやんの。
1.8系からかなぁ。
手元にあったプラグイン版はできねーし・・・。