SQLiteを使う(テーブル生成と削除)

◆PROCESSING 逆引きリファレンス

 カテゴリー:ファイル操作

SQLiteを使う(テーブル生成と削除)

【概要】

PROCESSINGはJavaをベースにした言語ですので、Javaと同じ手順でSQLiteを利用することが可能です。

SQLiteの利用準備とDBのOPEN/CLOSE処理については「SQLiteを使う(オープン・クローズ)」記事で紹介しました。

今回はOPEN(生成)したDBファイルに、データを格納するテーブルを作成する処理を紹介したいと思います。

 

【詳細】

DB操作用インスタンス取得

テーブルの生成には、SQL文を利用します。

SQLiteでSQL文を利用するためには、Statementクラスのメソッドを利用します。

Statementクラスのインスタンスは、DriverManagerクラスのgetConnectionメソッドから戻されたConnectionクラスが持つcreateStatemenメソッドを利用して生成します。

DB操作用インスタンス取得Statement stm = con.createStatement();

con : getConnection()で得たDBへの接続オブジェクト
stm : DB操作用インスタンス

Statementクラスは、テーブルを生成するSQL文を発行する以外にも利用します。

上記はDBをOPENして、操作用インスタンスを取得する例です。

操作用インスタンスの取得に失敗すると例外が発生するので、必ず例外処理を記述してください。

 

テーブル生成

生成したStatementインスタンスには、SQL文を発行するexecuteUpdate()メソッドがあります。

テーブルを生成するためには、このexecuteUpdate()メソッドにCREATE TABLEを行うSQL文を渡します。

DB操作用インスタンス取得int ret = stm.executeUpdate( String sql );

stm : DB操作用インスタンス
sql : 実行するSQL文
ret : CREATE TABLEやDROP TABLEの場合は0

executeUpdate()メソッドは、テーブルの生成やINSERT/UPDATEのような複数の戻り値(検索結果など)を必要としないSQL文の実行に利用します。

似たような命令にexecute()メソッドがあります。ネット上では、executeUpdate()ではなくexecute()メソッドを利用しているサンプルも多く見かけます。

テーブルの生成やINSERT/UPDATEのようなSQL文を発行するなら、どちらを利用しても大差ないでしょう。

上記はテーブルを生成する例です。SQLの実行に失敗すると例外が発生するので、必ず例外処理を記述してください。

CREATE TABLE 文は、基本的には以下のような形式で記述します。

“IF NOT EXISTS” 部分は指定しなくてもOKです。ただし指定しない場合、すでに存在するテーブルと同名のテーブルを作成しようとすると、例外エラーとなるので注意してください。

フィールド名は、みなさんが自由につける項目名です。ただし、SQLiteではテーブル名やフィールド名は大文字・小文字を区別しません。CREATE文で同じテーブル内に複数の同名フィールドを指定すると、例外エラーとなります。

データ型には、以下の何れかが指定可能です。

データ型 説明
NULL NULLがはいります。
INTEGER 符号付きの整数を格納する項目
TEXT 可変文字列を格納する項目
REAL 浮動小数点を格納する項目
NUMERIC 数値(精度10桁(小数部5桁)の固定小数点、真偽値など)を格納する項目
BLOB バイナリデータを格納する項目

SQLiteでは、日付を直接格納するような型はありません。Javaで扱うなら、日付を文字列として格納するのが、よくあるパターンのようです。

SQLiteでの日付の扱いについては、下記サイト様などが参考となります。

制約条件には、以下のような項目が指定可能です。

制約条件 説明
PRIMARY KEY 主キーである事を宣言します
UNIQUE データが一意である事を指定します
NOT NULL NULLではない事を指定します
DEFAULT 値 値を初期値にします
AUTOINCREMENT INSERT時に自動的に通番を振ります
CHECK( 条件式 ) INSERT時に条件式に適合したものだけ挿入します

SQLIteのCREATE文については、下記サイト様などが参考となります。私も参考にさせて頂きました。ありがとうございます。

 

テーブルの削除

executeUpdate()メソッド(またはexecute()メソッド)にDROP TABLE文を与える事で、テーブルを削除することが可能です。

上記はテーブルを削除する例です。SQLの実行に失敗すると例外が発生するので、必ず例外処理を記述してください。

DROP TABLE文は、基本的には以下のような形式で記述します。

“IF EXISTS” 部分は指定しなくてもOKです。ただし指定しない場合、存在しないテーブルを削除しようとすると、例外エラーとなるので注意してください。

 

【関連記事】

 


サンプルプログラム

テーブルを生成する例:

TESTテーブルが存在すれば削除し、その後で新規に作成しています。
TESTテーブルは、以下のような形式になっています。

列名 説明
_id INTEGER 主キー
_datetime TEXT 日付格納用テキスト
_image BLOB バイナリデータ格納用。デフォルト値はNULL
_aspect REAL アスペクト比格納用。デフォルト値は1.0で0より大きいこと

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。