サーバーJava入門先頭  H2 DB編先頭
2009-08-25更新 2008-5-30作成

 ■H2 DB 他アプリからの利用(JDBC)

 ここではH2 Database Engineを、他のフロントエンドアプリケーションソフトから利用する方法について説明します。

 具体的にはODBCを利用して、Microsoft AccessやExcelからH2 DBのテーブルに接続する方法。それとJDBCを利用して、OpenOffice BaseからH2 DBのテーブルに接続する方法です。新規データベースの作成もしくは既存データベースに接続済で、H2 Consoleが開かれているところから話を進めます(データベース作成や接続は、H2 DBの操作2 を参照)。

 ■JDBCの利用

 ■JDBCドライバ

 JDBCドライバは必要ありません。正確には別に用意する必要はない、ということです。

 H2 DBインストールディレクトリ\binに、h2-バージョン番号.jar(例えばVer1.1.117ならh2-1.1.117.jar)というH2 DB本体のファイルがあります。これにJDBCドライバも含まれているからです。ですからJDBCドライバを使うときは、このファイルを必要な場所にコピーして使います。

 ただしこのページではファイルを直接コピーしません。最初にこの名前にバージョン番号を含んだファイルをコピーして、h2.jarというファイルを作っておきます。

 さらにこのh2.jarへのショートカットファイルを作成しておき、コピーするときはこの「h2.jarへのショートカット」ファイルをコピーするとよいでしょう。「h2.jarへのショートカット」ファイルをコピーしたらコピー先でファイル名を変更し、「h2.jar」(実体はショートカット)にしておくのです。

 これは新しいH2 DBのリリースが出てそれにバージョンアップしたとき、H2 DBにJDBC接続する他のアプリ側で再設定をしたり、h2.jarを再配布(再コピー)する手間がないためです。

 新しいバージョンのH2 DBをインストールする度にコピーしてこのh2.jarファイルを作り直しておけば、ショートカットファイルの変更は必要ありません。

 ちなみにJ2EE環境で、APサーバーにTOMCATを使う場合も同じ方法が使えます。TOMCATの場合はコピー先を、%CATALINA_HOME%\common\lib(TOMCATインストールディレクトリ\common\lib)にしてください(TOMCATでの設定は「H2 DB JDBC接続」にまとめて整理してあります)。

 ・JDBCドライバの準備

  ・OpenOffice 3.0以降

 OpenOfficeでJDBCを使う場合OpenOffice3.0から仕組みが変わり、事前設定が必要です。OpenOffice.orgを立ち上げ、メニューから「ツール」−「オプション」でダイアログを表示します。ダイアログの左側「OpenOffice.org」を展開し「Java」を選択します。

JDBCドライバクラス設定ダイアログ
JDBCドライバクラス設定ダイアログ

 次に「クラスパス」ボタンを押すとクラスパス設定ダイアログが表示されるので、「アーカイブを追加」ボタンを押します。

「アーカイブを追加」を選択
ダイアログで「アーカイブを追加」ボタンを選択

 これで表示される「アーカイブの選択」ダイアログでH2 DBインストールディレクトリに移動し、コピーして作成したh2.jarファイルを選択します。

JDBCドライバクラスのjarファイルを選択
JDBCドライバクラスのjarファイルを選択

 以上でJDBCドライバクラスを含むアーカイブ(jarファイル)が選択できました。

JDBCドライバクラスのjarファイル選択結果
JDBCドライバクラスのjarファイル選択結果

 これでOpenOfficeからJDBCを使う場合の準備は完了です。

 ・OpenOffice Baseからの利用

 「スタートメニュー」からOpenOffice Baseを起動すると、データベースウィザードのダイアログが表示されます。まずデータベースの種類として、「既存のデータベースに接続」を選択し、JDBCを選びます。

データベース種類の選択
OpenOffice Base データベース種類の選択

 続いて接続先データベースを指定します。指定内容はH2 Consoleを使って接続するときと同じで、接続先データベースは「データソースのURL」に指定します。

 なおここではサーバーモードのH2 DBに接続する前提で説明しています。つまり事前にH2 DBが起動されている、という前提です。

 h2:tcp://の後ろがlocalhostになっているのは、H2 DBを同じPC上で動かしている場合の指定です。別PCの場合は、そのPCのIPアドレスかHOST名を指定してください。

 また「◇H2 DBデータベースファイルの場所変更」でbaseDirパラメータを指定しているケースを想定しています。そのためlocalhostの後ろはtestdbしか指定していませんが、データベースファイルの所在場所は(この例では)C:\WORK\DATAです。

 それと「JDBCドライバクラス」は固定で、このとおり指定してください。

接続先データベースの指定
OpenOffice Base 接続先データベースの指定

 それから接続時に使用する、認証情報設定です。H2 Consoleから接続するときにデフォルトで表示される、saユーザーIDで接続しようとする例です。

接続先時に使用するユーザーIDの指定
OpenOffice Base 接続時に使用するユーザーID設定

 ここまで指定した内容で、H2 DBに接続するためのOpenOffice Baseデータベースが作成されます。この作成後の処理を指定します。デフォルトのままでよいでしょう。

データベース保存設定
OpenOffice Base データベース保存設定

 最後にデータベースの保存先を指定します。ここで言うデータベースとは、H2 DBデータベースのことではありません。あくまでもOpenOffice Baseデータベースです。

 ここまで行ってきた指定により、新しいOpenOffice Baseデータベースが作成されます。そしてこのデータベース内のテーブルはOpenOffice Base形式のテーブルではなく、H2 DB形式のテーブルへのリンクになっている、という構造です。このデータベース内でクエリー、フォーム、レポートを作成した場合、これらはここで指定したOpenOffice Baseデータベース内に作成されます。

データベース保存先パス指定
OpenOffice Base データベース保存先パス指定

 以上の作業の結果、既存のH2 DBデータベースに接続したサンプルが次の画面です。接続したH2 DBデータベースにはいくつかテーブルが作成済みなので、そのテーブルが表示されています。

 またWindowの下部分には接続情報が表示されています(JDBC接続、接続先H2 DBデータベースURL、接続ユーザーID)。

H2DBデータベースに接続した状態
OpenOffice Base H2DBデータベースに接続した状態

 ■組込モードでのJDBC利用

 つづいてJDBCを使用し、組込モードでH2 DBデータベースにアクセスする際の設定について説明します。まず今まで説明してきたサーバーモードとの違いを説明しましょう

 サーバーモードでH2 DBデータベースにアクセスする場合、NTサービスやプロセスとして、H2 DBが事前に起動されている必要があります。

 またH2 DBデータベースが別PCにある場合、データソースURL指定でlocalhost以外の、ipアドレスやHOST名を指定できます。これにより別PCに接続してのDB操作が可能です。

 これに比べて組込モードの場合、事前にH2 DBを起動しておく必要はありません。組込モードではH2 DBは、H2 DB形式のファイルに対するアクセスドライバのように動くからです。

 また組込モードの場合は、対象のH2 DBデータベースファイルとそれを操作するアプリケーションは、同じPC上にある必要があります。サーバーモードのようにデータソースURL指定でIPアドレスやHOST名を指定することにより、別PCにあるH2 DBデータベースファイルにアクセスすることは出来ません。

 ・OpenOffice Baseからの利用(組込モード)

 上の「・OpenOffice Baseからの利用」で説明した、画面遷移と設定の中で、サーバーモードと組込モードで異なる部分だけを説明していきます。

 異なるのは画面遷移の2ステップ目、「接続先データベースの指定」です。ここで指定する「データソースのURL」指定方法で、サーバーモードで接続か組込モードで接続かが決まります。

 サーバーモードの場合はh2:tcp://の後ろがlocalhostやipアドレス、HOST名でした。

 組込モードの場合はここが、h2:file:となります。この後ろに接続するデータベースを指定します。まずは接続先データベースを、フルパスで指定した例を示します。

接続先データベースの指定(組込モード)
OpenOffice Base 接続先データベースの指定(組込モード)

 もう一つはデフォルトパス指定の場合です。このときはパス情報は指定せず、データベース名だけを指定します。

接続先データベースの指定(組込モードデフォルトパス)
OpenOffice Base 接続先データベースの指定(組込モードデフォルトパス)

 これ以外の設定は、サーバーモードの場合と同じです。設定を最後まで行い、既存のH2 DBデータベースに、組込モードのフルパス指定で接続したサンプルが次の画面です。

 Windowの下部分に表示される接続情報を見ると、h2:file:となっていて組込モードであることが分かります。また接続先データベースは、フルパス指定になっています。。

H2DBデータベースに組込モードで接続した状態
OpenOffice Base H2DBデータベースに組込モードで接続した状態

 ■組込モード時のデータベースファイルの場所

 ここで組込モードでH2 DBを使う場合の、JDBC URL(データベースウィザードの「データソースURL」)指定パターンと、対象になるデータベースファイルの所在についてまとめておきます。

 組込モードで使うので、JDBC URL の先頭部分はfile:を付けて jdbc:h2:file: と指定します。この後ろが、接続(作成)しようとするデータベースの名前です。この名前部分の指定パターンによって、データベースファイルの作成場所が次のように変わります。

データベースファイルの作成場所
指定パターンデータベースファイルの所在
jdbc:h2:file:~/test  C:\Documents and Settings\Windowsユーザー名\ に、testデータベースが作成される。
jdbc:h2:file:test  この場合も~指定と同様に、C:\Documents and Settings\Windowsユーザー名\testデータベースが作成される。
 これはサーバーモードでH2 DBを動かしたときとは違う動作になる。
jdbc:h2:file:c:\work\data\test  ドライブ名からフルパスで指定したときは、そのフルパス指定の場所に作成される。
 例ではc:\work\data\ に、testデータベースが作成される。

 サーバーモードで動かす場合は「◇H2 DBデータベースファイルの場所変更」で説明したように、設定ファイルや起動コマンドでbaseDirを指定出来ます。これによりデフォルト指定時(JDBC URL指定で~指定やフルパス指定をせず、対象データベース名だけを指定したとき)のデータベースファイル作成場所を指定できます。

 ですが組込モードで使用する場合、設定ファイル等は参照されないためbaseDirによる指定は出来ません。そのためデフォルト指定時の、データベースファイル作成場所を変更することは出来ません。ということで組込モードで使用するときは、フルパスでデータベースファイルを指定するのが良いと思います。




このページの先頭  技術メモ先頭  サーバーJava入門先頭  H2 DB Engine編先頭
Copyright © 2008-2009 yok. All Rights Reserved.