SQLite JDBC Driver for MysaifuJVMを使ってみる(http://halt-now.cocolog-nifty.com/blog/mysaifu_jvm/index.html)
おもしろいです。
テストコードを作るまでは簡単だったのですが、実際に動かすまでに一苦労(^^;)。いや、JDBCドライバもjniも使うのが初めてだったのでその辺で苦労しただけですが。
- 愛用のEclipse3.4でJDBCを使うプロジェクトを作成
- sqlite3.jarにクラスパスを通してコンパイル
- 実行時もsqlite3.jarをクラスパスに入れて実行
- jniが見つからんと怒られる
うーんと、
ただ、これでは使いづらいなぁ。ユーザーによってはprogram filesに触れるとは限らないわけだし。
- sqlite3.jarと同じディレクトリにsqlite3jni.dllを入れる:×
- Eclipseプロジェクトのディレクトリ(.projectと同じディレクトリ)にsqlite3jni.dllを入れる:○
あー、これでいいんだ。なるほど。
ちなみに、
- 出来上がったjarファイル(Manifest付き)と同じディレクトリにsqlite3jni.dllを入れてダブルクリック:○
でも大丈夫でした。おお、こうやって配るものなんだなぁ。
いや、Win32はどうでもいいんだ(^^;)。
MysaifuJVMで動かそうとしてまた一苦労。
これはマニュアルにあるとおり。
- クラスファイルを転送してクラスを指定して実行:×(Class.forName("org.sqlite.Driver");が見つからないと怒られる)
……あ、そりゃそうだな。JDBCドライバが無いんだから。
- sqlite3.jarを転送してクラスパスに入れた上で実行:○
うーん、転送するファイルが多いなぁ。人に見せるのが大変だ。
そこで、以下の方策をとりました。
- sqlite3.jarを展開したものと、作ったクラスファイルをまとめてjarにして、Manifestもつけた上で実行:○
おお、jniはともかくjdbcはこうすればどうにかなるんですね。面白いなぁ。
パフォーマンスまでは判りませんでしたが、同じソース、同じバイナリで動くことが判っただけでも収穫です。せっかくなのでいろいろ細工してみましょう(^^)。