torutkのブログ

ソフトウェア・エンジニアのブログ

JavaからSQLite DBを使う

C言語APIを持つライブラリ形式のSQLiteなので、Javaから使うにはどうすればよいのかと思ってググってみると、おおむね以下のSQLiteJDBCドライバを使うのがメジャーなようです。

通常、JDBCはデータベース管理プロセスへ接続するインタフェースを持つので、SQLiteのようなライブラリ形式でリンクする場合はどうするのかと思っていたら、SQLiteJDBCが提供するjarファイルの中に、主要OS用のネイティブライブラリファイルが同梱されていたのですね。

$ jar tvf sqlitejdbc-v056.jar
     0 Thu May 15 04:49:06 JST 2008 META-INF/
    71 Thu May 15 04:49:06 JST 2008 META-INF/MANIFEST.MF              
      :(中略)
424448 Tue Jun 09 20:05:26 JST 2009 linux-amd64.lib
374696 Tue Jun 09 20:03:58 JST 2009 linux-x86.lib
1529300 Tue Jun 09 20:47:00 JST 2009 mac-universal.lib
385024 Tue Jun 09 20:03:02 JST 2009 win-x86.lib
$

Linuxは32bit/64bit用、MacWindows用のネイティブライブラリがあります。SQLite自体はなくても動作します。

SQLiteJDBCのホームページにある簡単なサンプル(Getting Started)のJavaコード(40行程)を打ち込んで実行すると、SQLiteのデータベースファイルが生成されます。SQLiteのコマンドで確認すると、サンプルのプログラム内から作成したテーブルとインサートしたデータが入っていました。

簡単インストール

JDKをインストールしたディレクトリの中のjre/lib/ext/の下に、sqlitejdbcのjarファイルを置けば、クラスパス等特別な設定なく利用することができます。

  • Windowsの場合の例(JDKをC:\Program Files\jdk1.6.0にインストール)

C:\Program Files\jdk1.6.0\jre\lib\ext\sqlitejdbc-v056.jar

  • Linuxの場合の例(JDKを/usr/java/jdk1.6.0_14にインストール)

/usr/java/jdk1.6.0_14/jre/lib/ext/sqlitejdbc-v056.jar

接続のサンプル

  Class.forName("org.sqlite.JDBC");
  Connection connection = DriverManager.getConnection("jdbc:sqlite:test.db");
  Statement statement = connection.createStatement();

DBのURLはファイルパスで記述できるようです。上記は、カレントディレクトリにSQLiteのDBファイルを置いて実行した場合ですが、別なディレクトリにあるときは、以下の記述でアクセスできました(WindowsでE:\java\db\foo.dbの場合)

"jdbc:sqlite:D:/java/db/foo.db"