SQLite3でお手軽DBプログラミング

仕事で必要にかられてちょっと調査。まずはJDBCドライバを探す。

Google先生で検索してみたら、とりあえずこれ(http://www.zentus.com/sqlitejdbc/)が引っかかった。

単なるJarファイル。クラスパスを通せばよい。

サンプルソースもダウンロード先に書かれているのでそれを動かしてみる。ちょっといじってみた。

package miyohide;

import java.sql.*;

public class JdbcAccess {
  public static void main(String[] args) throws Exception {
    Class.forName("org.sqlite.JDBC");
    Connection conn = null;
    try {
      conn = DriverManager.getConnection("jdbc:sqlite:test.db");
      peopleAdd(conn);
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        conn.close();
    }
  }

  public static void peopleAdd(Connection conn) throws SQLException {
      ResultSet rs = null;
      try {
    Statement stat = conn.createStatement();
    stat.executeUpdate("drop table if exists people;");
    stat.executeUpdate("create table people (name, occupation);");
    PreparedStatement prep = conn.prepareStatement(
      "insert into people values (?, ?);");

    prep.setString(1, "Gandhi");
    prep.setString(2, "politics");
    prep.addBatch();
    prep.setString(1, "Turing");
    prep.setString(2, "computers");
    prep.addBatch();
    prep.setString(1, "Wittgenstein");
    prep.setString(2, "smartypants");
    prep.addBatch();

    conn.setAutoCommit(false);
    prep.executeBatch();
    conn.setAutoCommit(true);

    rs = stat.executeQuery("select * from people;");
    while (rs.next()) {
      System.out.println("name = " + rs.getString("name"));
      System.out.println("job = " + rs.getString("occupation"));
    }

      } catch (SQLException e) {
          e.printStackTrace();
      } finally {
          rs.close();
      }
  }

}

実行してみる。

name = Gandhi
job = politics
name = Turing
job = computers
name = Wittgenstein
job = smartypants

おぉぉ!

SQLite3はデータベースの情報は単純に一つのファイルとして保存されている。保存先はカレントに成っているので、それの確認とSQLite3で内容の確認をしてみる。

hikari.local{miyohide}% cd NetBeansProjects/JDBC_Sample
hikari.local{miyohide}% ls
build		lib		nbproject	test
build.xml	manifest.mf	src		test.db
hikari.local{miyohide}% sqlite3 test.db
SQLite version 3.6.21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from people;
Gandhi|politics
Turing|computers
Wittgenstein|smartypants
sqlite> 

おぉぉ。ちゃんと出来ている。