タイトルFileMaker Developer 5を使う:Javaからの利用(1)カテゴリーJava, データベース
作成日2000/8/9 15:47:14作成者新居雅行
ファイルメーカーProへのデータベースアクセスをJavaのプログラムで行うことができる。そのための必要なものがDeveloper版に含まれている。この場合は、Webコンパニオンを稼動させたか、あるいはUnlimited版など、つまりデータベースをWebに公開しているデータベースに対してアクセスができるようになる。ネットワークの共有や別途共有のための仕組みを用意するのではない。
JavaからファイルメーカーProにアクセスするために、2つの枠組みが用意されている。1つはJDBCドライバである。ファイルメーカーPro向けのJDBCドライバは、完全なJavaネイティブなもので、アプレットでもアプリケーションでも使えるし、もちろんアプレットの場合にはダウンロードして利用できる。また、基本的にはクロスプラットフォーム対応である。これを利用する場合には、JDBCに従ってプログラムを作成しないといけない。もう1つの枠組みは独自のクラスライブラリで「ファイルメーカーJavaクラス」と呼んでいる。こちらは、クラス形式で与えられた完全にオリジナルのクラスで、その仕様に従ったプログラムを作成しないといけない。
ログを見る限りではどちらも、HTTPを使ってWebコンパニオンに接続してデータベース処理を行っている。-formatなどのクエリー文字列を、クラス内部で自動的に付けて処理を行い、処理結果をまたJavaのオブジェクトとして利用できるようにするような処理をしていると考えればよいだろう。ちなみに、JDBCドライバはPOSTで取得しているが、ファイルメーカーJavaクラスはGETメソッドを使っているようだ。いずれのJavaクラスもJDK 1.1.8での動作を保証している。従って、MRJ環境でもバージョン的には安心して使えることになる。

まず、JDBCドライバを利用してみよう。Developer版にfmpjdbc12.jarというファイルがあり、これがいろいろなクラスが含まれているJDBCドライバの本体である。もちろん、利用方法はたくさんあるのだが、CodeWarriorでJavaアプレットを作ってみるということを考える。CodeWarriorのテンプレートを利用すると、Java Classesフォルダが作られ、そこにクラスファイルが作られる。このJava Classesフォルダに、JDBCドライバを含むアーカイブのfmpjdbc12.jarを入れておく。そして、Applet1というアプレットを作るが、ウィザードを利用したために、FMP_Accessというパッケージの中に定義される。結果的にプロジェクトと同じ階層にあるFMP_AccessフォルダにApplet1.javaというソースファイルが作られる。コンパイル結果は、Java Classesの中にFMP_Accessフォルダを作り、そこにApplet1.classファイルが作成されることになる。以上のような状況のアプレットを呼び出すタグは次のようになる。ARCHIVE属性に、JDBCドライバの存在するファイルを追加指定しておくのがポイントになる。

<APPLET
CODEBASE = "Java%20Classes"
CODE = "FMP_Access.Applet1.class"
ARCHIVE = "fmpjdbc12.jar"
NAME = "TestApplet"
WIDTH = 400
HEIGHT = 200
HSPACE = 0
VSPACE = 0
ALIGN = middle
>
</APPLET>


プログラムは別の記事に掲載する。アプレットではBorderLayoutで、上部にボタン、中央部にリストを配置し、データベースから取得した結果をリストに配置するとしよう。ボタンをクリックして実行されるクラスを定義しており、データベースのアクセスはそのクラスで行っている。クラスへのパスは「com.fmi.jdbc.JdbcDriver」であり、まずはこのクラスをロードする。そして、コネクションを確立するが、リストにあるように「jdbc:fmpro:http://192.168.0.101」をJDBC URLとして指定する。3つ目のセクションはhttpでなくてはならないが、もちろん、IPアドレスではなくドメイン名やあるいはlocalhostで自分のマシンに接続するということでもかまわない。
そして、SQLコマンドを実行している。しかし、ファイルメーカーProはSQLコマンドに対応しているわけではない。これは、JDBCドライバがSQLコマンドを独自に解釈してWebコンパニオンに発行する命令を生成している模様だ。SELECTだけでなく、INSERT、UPDATE、DELETE、CALLにも対応する。CALLはストアドプロシージャであるが、つまりはファイルメーカーProに定義したスクリプトを呼び出すということもできる。SQL文中、フィールド名やテーブル名を明記するためにクォーテーションを使うことが多いが、ファイルメーカーProのJDBCでは、ダブルクォーテーションしか使えず、シングルクォーテーションだとエラーになってしまう。結果的に文字列中であるから、\" のように記述しないといけない。なお、ユーザ認証が必要な場合には、JDBC URLにクエリー文字列形式で情報を加えることで対応できる。詳細はマニュアルを参照してもらいたい。

Webコンパニオンで公開したデータベースは次のような、テキスト型のフィールドが2つある単純なデータベースである。

◇Webコンパニオンで公開したデータベース
 

そして、Applet1の実行結果は次の通りだ。ボタンをクリックして、リストにデータベースから取得したデータを単に項目として配置したというものである。いずれにしても、標準ライブラリであるJDBCの仕組みを利用して、JavaのアプレットでファイルメーカーProのデータベースにアクセスできたということである。

◇Applet1の実行結果
 
関連リンク