rubbish-dbで対応しようと思ってMckoiを使ってみることにした。Apache Derbyよりはドキュメントが充実しているので、とっつきやすいと思う。たぶん。
データベースを作る
チュートリアルに従って、以下のようにデータベースを作成。
コマンドをたたくとカレントディレクトリにdataフォルダが作成されて、データベースの実体っぽいファイルがいくつか置かれていた。
~/mckoi1.0.3$ java -jar mckoidb.jar -create "admin_user" "aupass00"Mckoi SQL Database ( 1.0.3 )
Copyright (C) 2000 - 2004 Diehl and Associates, Inc. All rights reserved.
Use: -h for help.Mckoi SQL Database comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt for details of the
GPL License.
この辺のディレクトリの配置などは、db.confの設定で決まるよう。
埋め込み(embedded)アプリとしMckoiを使う
埋め込みモードだと別プロセスでDBを起動しなくても、同一プロセス内で勝手にデータベースが走って(?)くれるよう。なんとなく違和感を感じるけど、確かに手軽。
import java.sql.*;public class EmbeddedDatabaseDemo {
public static void main(String[] args) {
EmbeddedDatabaseDemo demo = new EmbeddedDatabaseDemo();try {
demo.run();
} catch (Exception e) {
e.printStackTrace();
}
}public void run() throws Exception {
Class.forName("com.mckoi.JDBCDriver");String url = "jdbc:mckoi:local://./db.conf";
String username = "admin_user";
String password = "aupass00";Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT DATEOB()");
rs.next();
System.out.println(rs.getString(1));
rs.close();
stmt.close();
conn.close();
}}
「データベースを立ち上げる」ということをしなくても、データベースにアクセスできる。チュートリアルではドライバのインスタンスを生成してたけど、別にnewInstance()しなくても動いた。(なんか違いあるのかな?)
DATEOB()で現在日時を取得。DUALとかSYSDUMMY1とかダミーテーブルはないっぽい。
マルチユーザのサーバー(multi-user server)としてMckoiを使う
以下のコマンドでDBを起動。これだけなら、確かに起動用スクリプトも不要かも。
~/mckoi1.0.3$ java -jar mckoidb.jarMckoi SQL Database ( 1.0.3 )
Copyright (C) 2000 - 2004 Diehl and Associates, Inc. All rights reserved.
Use: -h for help.Mckoi SQL Database comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt for details of the
GPL License.TCP JDBC Server (multi_threaded) on port: 9157.
Boot time: 1843ms.
プログラムからアクセスするときは次のようにurlを変更。
String url = "jdbc:mckoi://localhost/";