NetBeans

2008年3月13日 (木)

NetBeansでSQLite3 JDBC Driverを使ってみる

SQLite3 JDBC Driver を使ったアプリケーションを作る前準備として NetBeans IDE 6.1 Beta 上で SQLite3 を使えるようにしてみます。

  1. NetBeans IDE 6.1 Beta の Java SE パックをダウンロードしてインストールします。
    JDK 6 は事前にインストールしておく必要があります。
  2. sqlite3jdbc-0.0.6.zip をダウンロードして任意のフォルダに展開します。
    ここでは C:\Java\sqlite3jdbc に展開します。
  3. sqlite3jni-0.0.6-win32.zip をダウンロードして任意のフォルダに展開します。
    ここでは C:\Java\sqlite3jdbc\win32 に展開します。
  4. 「C:\Java\sqlite3jdbc\win32」を環境変数「PATH」に追加します。
    Env001
  5. NetBeans を起動します。
  6. 「CTRL+5」で「Services」ウィンドウに切り替えます。
    Netbeans001
  7. 「Drivers」→右クリック→「New Driver...」をクリック。
    Netbeans002
  8. Driver File(s)」に「C:\Java\sqlite3jdbc\sqlite3.jar」を追加して「Find」ボタンをクリック。「Name」に「SQLite3」と入力して「OK」ボタンをクリックし、SQLite3 JDBC Driver を登録します。
    Netbeans003
  9. 「SQLite3」→右クリック→「Connect Using...」をクリック。
    Netbeans004
  10. 「Database URL」に「jdbc:sqlite:mem:」と入力して「OK」ボタンをクリック。
    Netbeans005
  11. ツリーに追加された「jdbc:sqlite:mem: [on main]」にテーブルを作成します。
    「Tables」→右クリック→「Create Table...」をクリック。
    Netbeans006
    「SAMPLE」テーブルを作ってみます。
    Netbeans007
  12. ツリーに「SAMPLE」テーブルが追加されました。
    Netbeans008
  13. テーブルの中身を確認してみます。
    「SAMPLE」→右クリック→「View Data...」をクリック。Netbeans009
    「Output」パネルにエラーが出力され、テーブルの中身は確認できません…orz
    Netbeans010
    原因は SQLite v3.3.5 では sqlite3_step() を呼び出さないと sqlite3_column_type() でカラム型を取得できないためです。次のバージョン(0.0.7)では例外を投げないように変更する予定です。
  14. 気を取り直して、SQLite3 JDBC Driver ver 0.0.7(開発版)をダウンロードして C:\Java\sqlite3jdbc に展開します。
    「sqlite3jdbc-0.0.7-dev.zip」をダウンロード
  15. NetBeans を再起動して、再度テーブルの中身を確認してみます。
    Netbeans011
    無事、テーブルの中身が表示されました(空っぽですが)。
  16. 次はレコードを登録してみます。
    「Tables」→右クリック→「Execute Command...」をクリック。
    「INSERT INTO main.SAMPLE VALUES(1, 'ねこび~ん', 123.456789)」と入力して「CTRL+Shift+E」で SQL を実行します。
    Netbeans012
  17. 再度テーブルの中身を確認してみます。
    Netbeans013
    無事、登録されているレコードが確認できました。
  18. 使い終わったら DB 接続を閉じましょう。
    「jdbc:sqlite:mem: [on main]」→右クリック→「Disconnect」をクリック…すると NetBeans がクラッシュします…orz
    Netbeans014
    原因は SQLite v3.3.5 では sqlite3_open() したスレッドとは異なるスレッドで  sqlite3_close() を呼び出すことができないためです。
    (リリースノートには v3.3.1 で異なるスレッドでの sqlite3_close() 呼び出しに対応したとあるんですが…)


    ※ビルドオプションに「SQLITE_ENABLE_MEMORY_MANAGEMENT」を追加しているのが原因でした…orz
    ※「SQLITE_ENABLE_MEMORY_MANAGEMENT」は組み込みデバイスなどのメモリが厳しい環境のみ指定するのが正しいようです。

    試しに v3.5.6 で JNI ライブラリをビルドしたところ NetBeans がクラッシュしなくなったので SQLite のバージョンをあげれば解決するはずです。
    「sqlite3jni-0.0.6-win32-sqlite-3.5.6.zip」をダウンロード

NetBeans で SQLite3 を使ったみた感想は「ちゃんと DatabaseMetaData を実装した甲斐があったなぁ…」でしたcatface

| | コメント (2) | トラックバック (0)

その他のカテゴリー

CeGCC | Delphi | DirectShow | iPhone | Java | JMF | Mac | Mysaifu JVM | NetBeans | onig4j | Ruby | SQLite | W-ZERO3 | Windows Mobile | ワンセグ | 開発