2
1

More than 3 years have passed since last update.

ProcessingとSQLiteを連携する

Last updated at Posted at 2019-11-11

Processing3上からSQLiteを使ってデータベース操作する方法のまとめ。

以下のサイトを参考にしています。
http://mslabo.sakura.ne.jp/WordPress/make/processing%E3%80%80%E9%80%86%E5%BC%95%E3%81%8D%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/sqlite%E3%82%92%E4%BD%BF%E3%81%86-db%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3/

sqlite-jdbcをスケッチフォルダ内に保存する。

まずはProcessingを開いて、ファイルを保存する。するとスケッチのフォルダが作成される。(今回は、DB_test_1.pdeとして保存してみる)

次に、ProcessingからSQLiteを操作するのに必要なJDBCをスケッチフォルダに保存する。

JDBCはSQL言語ごとに様々なものがあるが、SQLite用JDBCは以下のサイトから入手できる
https://github.com/xerial/sqlite-jdbc

入手したJDBCはスケッチフォルダ内に新たにcodeフォルダを作成し、その中に保存しよう。
スクリーンショット 2019-11-11 16.31.05.png

これで事前準備完了。

JavaのSQLパッケージを利用したコードを記述する

ProcessingはJava環境なので、Javaのパッケージを利用することができる。JavaからSQLを利用する際には、java.sqlパッケージを利用しよう。

このjava.sqlパッケージ内には、DBMS(DataBase Management System)への接続・切断やSQL文を送信する際に利用できるクラスが含まれている。

今回は、DBMSへの接続準備を行うためのDriverManagerクラス、DBMSへの接続を行うConnectionクラス、SQL文を送信するためのStatementクラスを利用する。

最終的なコードは以下の通り。

DB_test_1.pde
import java.sql.*; // パッケージのインポート
Connection connection = null; // 接続のためのクラスを宣言

void setup(){
  // DBファイルをスケッチフォルダに生成するため、絶対パスを指定。もしtest.dbが存在しない場合はスケッチ実行時に、test.dbが新たに作成される
  String dbName = sketchPath("test.db");

  // OPEN DB
  try{
    connection = DriverManager.getConnection("jdbc:sqlite:" + dbName); 
    Statement statement = connection.createStatement();
    statement.setQueryTimeout(30); // set timeout to 30 sec

    statement.executeUpdate("drop table if exists person");
    // 新たにTableを作成するためのSQL文を送信
    statement.executeUpdate("create table person(id integer, name)");

    // 作成したTableにデータをInsertしてみる
    statement.executeUpdate("insert into person values(1, 'leo')");
    statement.executeUpdate("insert into person values(2, 'yui')");

    // Tableの中身をすべてSelectし、Resultsetクラスに読み込む
    ResultSet rs = statement.executeQuery("select * from person");
    while(rs.next()){ // ResultSetに読み込まれたデータを表示する
      // read the result set
      String format = "name: %4s, id: %4d";
      println(String.format(format, rs.getString("name"), rs.getInt("id")));
      //print("name: " + rs.getString("name"));
      //println(", id: " + rs.getInt("id"));
    }
  } catch( SQLException e ){
    println(e.getMessage());
  } finally{
    dbClose();
  }
}

// データベース終了時の例外処理をまとめただけの関数
void dbClose(){
  try{
    if(connection != null){
      connection.close();
    }
  } catch (SQLException e){
    e.printStackTrace();
  }
}

上記コードを実行すると、test_dbファイルが新規作成され、Processingのコンソールに挿入したデータが表示されます。

以上が簡単なデータベースの利用方法の説明となります。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1