2010年01月22日

JavaからSQLiteを使ってみる

軽くて丈夫でコンパクト(というキャッチフレーズの腹筋トレーニングマシンが昔あった気がする)なSQLiteをJavaから使ってみる。

ここのページに置いてあるSQLiteJDBCが便利らしい。
http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC

どの辺が便利かというと、JARの中にWindows用のsqlitejdbc.dllとか、Linux用のlibsqlitejdbc.soが同梱されているので、パスやら環境を意識することなく、ライブラリを読み込みさえすれば使えてしまう。

しかも、もしWindowsでもMacでもLinuxでもなかった場合は、PureJavaなSQLiteを呼んでくれたりもするらしい。Java版の実装なんてあったんですね。知らなかった。でも、ソースコード見ようと思ったらそこだけ何故か入ってなかった。


とりあえず、サンプル。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class SqlTest {

public static void main(String[] args) throws Exception {

// 準備。servicesとかは入ってないみたいなので、1.6でもforNameする。
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
Statement stmt = conn.createStatement();

// テーブルを作る。
// 実行するとgetConnection時に指定したtest.dbという名前のファイルが出来る。
stmt.execute( "create table test1( str1 string, int1 integer )" );

// とりあえず、1行INSERT。
stmt.execute( "insert into test1 values ( 'abc', 1 )" );

// SELECTして値を見てみる。
ResultSet rs = stmt.executeQuery( "select * from test1" );
while( rs.next() ) {
System.out.println( rs.getString( 1 ) );
System.out.println( rs.getInt( 2 ) );
}

// 閉じる
conn.close();
}
}