◆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 );
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文については、下記サイト様などが参考となります。私も参考にさせて頂きました。ありがとうございます。
- コピペで実践PHP 様(2022/05 Linkが見つかりません)
- Qiita 様:SQLite3まとめ:@ChiakiYamaokaさん
- DBOnline 様
テーブルの削除
executeUpdate()メソッド(またはexecute()メソッド)にDROP TABLE文を与える事で、テーブルを削除することが可能です。
上記はテーブルを削除する例です。SQLの実行に失敗すると例外が発生するので、必ず例外処理を記述してください。
DROP TABLE文は、基本的には以下のような形式で記述します。
“IF EXISTS” 部分は指定しなくてもOKです。ただし指定しない場合、存在しないテーブルを削除しようとすると、例外エラーとなるので注意してください。
【関連記事】
サンプルプログラム
テーブルを生成する例:
TESTテーブルが存在すれば削除し、その後で新規に作成しています。
TESTテーブルは、以下のような形式になっています。
列名 | 型 | 説明 |
---|---|---|
_id | INTEGER | 主キー |
_datetime | TEXT | 日付格納用テキスト |
_image | BLOB | バイナリデータ格納用。デフォルト値はNULL |
_aspect | REAL | アスペクト比格納用。デフォルト値は1.0で0より大きいこと |
本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。