ラベル H2 の投稿を表示しています。 すべての投稿を表示
ラベル H2 の投稿を表示しています。 すべての投稿を表示

H2をlinuxで使ってみる

ダウンロード

http://www.h2database.com/html/main.html

インストール

ダウンロードしたzipファイルを解凍するだけ。

起動

java -cp ./h2-1.1.102.jar org.h2.tools.Server
※jarのバージョンは異なるかもしれないのでご注意を!

接続

java -cp ./h2-1.1.102.jar org.h2.tools.Shell

サンプルselect

下記コードを実行する前にcreate table test_tbl(col1 int PRIMARY KEY);をお忘れなく。


import java.sql.*;
public class Test {

public static void main(String[] a) {

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {

Class.forName("org.h2.Driver");
//conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/~/test", "sa", "");
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from TEST_TBL");
while (rs.next()) {

System.out.println(rs.getInt(1));
}

Thread.sleep(2000);

} catch (Exception e) {

e.printStackTrace();

} finally {

if (rs != null) {

try {

rs.close();

} catch (Exception e) {

e.printStackTrace();
}
}

if (stmt!= null) {

try {

stmt.close();

} catch (Exception e) {

e.printStackTrace();
}
}

if (conn!= null) {

try {
conn.close();
} catch (Exception e) {

e.printStackTrace();
}
}
}
}
}

H2データベースファイルが作成されるディレクトリを変更する

デフォルトは?

デフォルトはH2インストールディレクトリでしょ。
って思ってインストールディレクトリ内を一通り見てみる。
・・・どこにも見あたらない。。
ググってみたら分かりました。
C:\Documents and Settings\<ユーザ名>
にそれらしきファイル群が!
これまたちょー分かりづれー。

変更する

起動のオプションで -baseDir "" とすればいいみたい。
c:\h2\data ディレクトリを作成し、
java -cp .\h2-1.1.101.jar org.h2.tools.Server -baseDir "c:\H2\data"
と実行。
コンソールで見ると・・
あれ?さっき作ったDBがみれる??
ん~なんでだって思ってc:\H2\data 配下を確認すると、空っぽ。
DBを作ってC:\Documents and Settings\<ユーザ名>配下を確認すると・・・
こっちファイル追加されてる。
変更できてねーじゃん。

マニュアル見ると・・・
JDBC URL を jdbc:h2:test みたいな感じにすると、-baseDir で指定したディレクトリ配下に作成されるらしい。
早速ためすと・・・、おぉーデータベースファイルが -baseDir で指定したパス配下にできました。

H2を使ってみる

サービスに登録する

C:\Program Files\H2\service\1_install_service.bat
を実行。そんだけ。

H2を起動させる

C:\Program Files\H2\service\2_start_service.bat
を実行。そんだけ。
のはずが・・・・、なんでか起動しない。
ちょっと調べたけどよく分からない・・・、メンドクサイから、
java -cp .\h2-1.1.101.jar org.h2.tools.Server
をコマンドラインで実行して自力で起動させる。

新しいDBを作る

http://localhost:8082/
でH2のコンソールを開く。
デフォルト設定でログインして、CREATE DATABASE コマンド発行してみるが・・
うぅ・・・CREATE DATABASE しても作れない。。
マニュアルを参照してみると、

By default, if the database specified in the URL does not yet exist, a new (empty) database is created automatically. The user that created the database automatically becomes the administrator of this database.

とのこと。どうやらURL指定して存在しないDBだった場合、自動でDBを作るとのこと。
マジで?と思いつつ、jdbc:h2:~/test → jdbc:h2:~/hoge にして接続してみると・・・
おぉ~、見事接続に完了です。
ちょーわかりづれー。

新しいテーブルを作る

テーブルは CREATE TABLE でいけるようですね。
早速作ろうとしましたが・・・、なんと int unsinged が使えない・・・
CREATE TABLE test(
col1 int PRIMARY KEY,
col2 bigint );
ん~、こーゆー書き方ってことは複数列のPKはできないってこと?
試しに・・
CREATE TABLE test(
col1 int PRIMARY KEY,
col2 bigint PRIMARY KEY);
「複数のプライマリキーを定義しようとしました」
だそうです。
「複数のPK」ではなく「複数の列でPK」なのに・・・
まぁ、これはいいや。