■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」を選択します。
次に「クラスパス」ボタンを押すとクラスパス設定ダイアログが表示されるので、「アーカイブを追加」ボタンを押します。
これで表示される「アーカイブの選択」ダイアログでH2 DBインストールディレクトリに移動し、コピーして作成したh2.jarファイルを選択します。
以上でJDBCドライバクラスを含むアーカイブ(jarファイル)が選択できました。
これでOpenOfficeからJDBCを使う場合の準備は完了です。 ・OpenOffice Baseからの利用「スタートメニュー」からOpenOffice Baseを起動すると、データベースウィザードのダイアログが表示されます。まずデータベースの種類として、「既存のデータベースに接続」を選択し、JDBCを選びます。
続いて接続先データベースを指定します。指定内容は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ドライバクラス」は固定で、このとおり指定してください。
それから接続時に使用する、認証情報設定です。H2 Consoleから接続するときにデフォルトで表示される、saユーザーIDで接続しようとする例です。
ここまで指定した内容で、H2 DBに接続するためのOpenOffice Baseデータベースが作成されます。この作成後の処理を指定します。デフォルトのままでよいでしょう。
最後にデータベースの保存先を指定します。ここで言うデータベースとは、H2 DBデータベースのことではありません。あくまでもOpenOffice Baseデータベースです。 ここまで行ってきた指定により、新しいOpenOffice Baseデータベースが作成されます。そしてこのデータベース内のテーブルはOpenOffice Base形式のテーブルではなく、H2 DB形式のテーブルへのリンクになっている、という構造です。このデータベース内でクエリー、フォーム、レポートを作成した場合、これらはここで指定したOpenOffice Baseデータベース内に作成されます。
以上の作業の結果、既存のH2 DBデータベースに接続したサンプルが次の画面です。接続したH2 DBデータベースにはいくつかテーブルが作成済みなので、そのテーブルが表示されています。 またWindowの下部分には接続情報が表示されています(JDBC接続、接続先H2 DBデータベースURL、接続ユーザーID)。
■組込モードでの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:となります。この後ろに接続するデータベースを指定します。まずは接続先データベースを、フルパスで指定した例を示します。
もう一つはデフォルトパス指定の場合です。このときはパス情報は指定せず、データベース名だけを指定します。
これ以外の設定は、サーバーモードの場合と同じです。設定を最後まで行い、既存のH2 DBデータベースに、組込モードのフルパス指定で接続したサンプルが次の画面です。 Windowの下部分に表示される接続情報を見ると、h2:file:となっていて組込モードであることが分かります。また接続先データベースは、フルパス指定になっています。。
■組込モード時のデータベースファイルの場所ここで組込モードでH2 DBを使う場合の、JDBC URL(データベースウィザードの「データソースURL」)指定パターンと、対象になるデータベースファイルの所在についてまとめておきます。 組込モードで使うので、JDBC URL の先頭部分はfile:を付けて jdbc:h2:file: と指定します。この後ろが、接続(作成)しようとするデータベースの名前です。この名前部分の指定パターンによって、データベースファイルの作成場所が次のように変わります。
サーバーモードで動かす場合は「◇H2 DBデータベースファイルの場所変更」で説明したように、設定ファイルや起動コマンドでbaseDirを指定出来ます。これによりデフォルト指定時(JDBC URL指定で~指定やフルパス指定をせず、対象データベース名だけを指定したとき)のデータベースファイル作成場所を指定できます。 ですが組込モードで使用する場合、設定ファイル等は参照されないためbaseDirによる指定は出来ません。そのためデフォルト指定時の、データベースファイル作成場所を変更することは出来ません。ということで組込モードで使用するときは、フルパスでデータベースファイルを指定するのが良いと思います。 |