« SQLite3 JDBC Driver for Mysaifu JVM バージョン 0.0.6 リリース! | トップページ | SQLite ver 3.5.7 for Windows Mobile »

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

|

« SQLite3 JDBC Driver for Mysaifu JVM バージョン 0.0.6 リリース! | トップページ | SQLite ver 3.5.7 for Windows Mobile »

Java」カテゴリの記事

NetBeans」カテゴリの記事

SQLite」カテゴリの記事

コメント

このページは大変有り難い情報で,早速NetBeansでSQLite3 JDBC Driverを使えるように設定してみたところ,このページの10番目の「jdbc:sqlite:mem:」を入力して「OK」ボタンをクリックした後にループ状態になり次に進めません.

OSはWindowsVistaで,NetBeanは6.0.1を使っています.

後は,このページに詳細されているものをインストールしました.

もし何かおわかりであれば対処法を教えてください,

投稿: cecil | 2008年9月19日 (金) 12時03分

「ループ状態になり次に進めません」とのことですが、NetBeansの画面右下に進入禁止マークのような赤いアイコンが点滅していないでしょうか?
もし点滅しているようなら一旦接続ダイアログをキャンセルしてアイコンをクリックするとエラーメッセージダイアログが表示されると思いますので教えていただけますか?
それとJDBCドライバとJNIライブラリは最新のバージョン(1.1.2)を使用してみてください。

投稿: calico | 2008年9月24日 (水) 00時02分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/505952/40477303

この記事へのトラックバック一覧です: NetBeansでSQLite3 JDBC Driverを使ってみる:

« SQLite3 JDBC Driver for Mysaifu JVM バージョン 0.0.6 リリース! | トップページ | SQLite ver 3.5.7 for Windows Mobile »