2009年8月13日

SQLの勉強に手軽に使えるHSQLDB

 HSQLDBはJavaで開発されたオープンソースのデータベース。
わずか690KBのJARファイル(hsqldb-1.8.0の場合)にデータベース本体もクライアントもJDBCドライバも入ってる軽量仕様。 データーベースの保存先だけ指定して起動すれば直ぐにSQLコマンドを入力できる状態になるので、情報処理技術者試験なんかでちょっとSQLを勉強したい用途には最適です。(・∀・)イイ!!


 まずHSQLDBをダウンロードします。 現在の最新はhsqldb-1.9.0-rc4ですが、これはJava6でビルドされています。 Tomcat5.5でJava5を使用している場合にはビルドし直す(ant jarコマンド)か、hsqldb-1.8.0.10を使用しましょう。

ダウンロードしたZIPファイルを解凍するとソースコードなどが展開されますが、必要なのはhsqldb\lib\hsqldb.jarだけです。 hsqldb.jarを適当なディレクトリ(TomcatならWEB-INF\libなど)にコピーし、続いてデータベースの保存先とするディレクトリ(例えばWEB-INF\mydb)を作成します。


 データベースの起動はJavaアプリなのでコマンドプロンプトから行います。
起動コマンドはバッチファイルに書いておくと良いでしょう。 起動するとmydbディレクトリの中にログファイルなどが出力されます。 停止はCtrl+Cです。

hsqldb-1.9.0-rc4の場合
WEB-INF\mydb> java -cp ..\lib\hsqldb.jar org.hsqldb.server.Server -database mydb

hsqldb-1.8.0.10の場合
WEB-INF\mydb> java -cp ..\lib\hsqldb.jar org.hsqldb.Server -database mydb


 次にSQLコマンドを入力するためのデータベースマネージャーを起動します。
デフォルトのユーザー名「sa」、空パスワードで接続されます。
WEB-INF\mydb> java -cp ..\lib\hsqldb.jar org.hsqldb.util.DatabaseManagerSwing -url jdbc:hsqldb:hsql://localhost


データベースが空なので最初はCREATE TABLE文を実行することになるかと思います。 データベースに登録したデータはmydb\mydb.scriptファイルにINSERT文の形で保存されます。

HSQL Database Manager


ちなみにJDBCドライバを使うサンプルコードがこちら。

/* java -cp classes;lib\hsqldb.jar SQLTest */
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;

public class SQLTest
{
public static void main(String[] args)
{
try {
Class.forName("org.hsqldb.jdbcDriver");
Connection con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost", "sa", "");
Statement smt = con.createStatement();
ResultSet rs = smt.executeQuery("SELECT * FROM ACCOUNT");

while( rs.next() )
{
System.out.println(
"ID=" + rs.getInt("ID")
+ ", NAME=" + rs.getString("NAME")
+ ", AGE=" + rs.getInt("AGE")
);
}
} catch(Exception ignore) {}
}
}

HSQLDBの元開発者が作ったH2 Database Engineが軽量・高機能らしい。c⌒っ゚д゚)っφ メモメモ...




 最近読んだご本『基礎からのサーブレット/JSP 改訂版』。これにHSQLDBが載ってました。 サーブレットのライフサイクルなどを説明してからその応用であるJSPの解説に入るといった丁寧な構成で、サンプルコードもよく練られています。 J2EEパターンを意識した設計で、将来の本格的なWebアプリケーション開発に繋がる堅実な基礎知識が身に付くでしょう。

あとテキストエディタ派にもEclipse派にも優しい。(・∀・)イイ!!

なお「基礎からの」とは「Java初心者向けの」という意味ではありません。

【関連記事】

0 件のコメント:

コメントを投稿