SQLiteを使う(検索)

◆PROCESSING 逆引きリファレンス

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

SQLiteを使う(検索)

【概要】

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

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

今回はOPEN(生成)したDBファイルからデータを検索する処理を紹介したいと思います。

なお表の作成については「SQLiteを使う(テーブル生成と削除)」記事を参照してください。

またデータを表に追加(挿入)する手順については「SQLiteを使う(データ挿入と削除)」記事を参照してください。

 

【詳細】

データを検索する

SQLといえばコレと言いたくなるほど、検索処理はメジャーですよね。表からデータを検索するには、SQLのSELECT文を利用します。

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

上記を基本形とし、データの並び変え(ORDER BY)を指定したり、データをグループとしてまとめて取得する(GROUP BY)ことが可能です。

SELECT文はデータをどのように集めたいかによって、いろいろな記述が可能ですので、詳しくは他の解説サイト様などを参照してください。

多くの場合、表に1レコード(1行)しかデータが無いということは稀だと思います。ある検索処理(SQL文)では、複数件のデータが取得できるのが一般的でしょう。

表から複数件のデータを集めてくることを「カーソルを組む」と言いますが、カーソルの処理にはResultSetクラスを利用します。

ResultSetクラスのインスタンスは、PreparedStatementまたはStatementクラスに対してexecuteQuery()メソッドでSQL文を発行した際に戻ってくるものを利用します。

検索結果を得るResultSet rs = stm.executeQuery( String sql );

rs : 検索結果
stm : Statementクラス
sql : 検索用SQL文

例えば以下のような感じです。

上記のSQL文では、TEST表から_NAME列に ‘JK’ という文字があるレコードを探しています。

検索結果は、executeQuery()メソッドで得られたResultSetから取得することが可能です。

ResultSetが持つ代表的なメソッドには、以下のようなものがあります。

メソッド 説明
1 boolean next(); カーソル(検索結果)から、データの取得位置を1つ進めます。これ以上データがない場合は false が戻されます。
2 int getRow(); 現在の行番号(データ取得位置)を取得します。
3 String getString(int columnIndex); columnIndex番目の列から文字列を取得します。最初の列は1番から始まります。
4 int getInt(int columnIndex); columnIndex番目の列からint値を取得します。最初の列は1番から始まります。
5 byte getByte(int columnIndex); columnIndex番目の列からbyte値を取得します。最初の列は1番から始まります。
6 float getFloat(int columnIndex); columnIndex番目の列からfloat値を取得します。最初の列は1番から始まります。
7 void close(); ResultSetを開放します。

基本はnext()メソッドが true を返す間、検索結果を取得するループ処理を作ってデータを取得し、最後に close() する流れになります。

例えば以下のような感じです。

getString()やgetByte()は列位置を数値で指定することも可能ですが、上記のように名前で指定することも可能となっています。

 

【関連記事】

 


サンプルプログラム

検索を行う例:

上記は、あらかじめ スケッチフォルダに以下のようなtest.dbというDBファイルが作成済みで、画像データが格納してある前提です。

サンプルで利用するTEST表

列名 説明
_id INTEGER 主キー
_image BLOB バイナリデータ格納用。デフォルト値はNULL
_NAME TEXT 画像の名前

格納済みのデータ

名前 絵柄
メイド
アイドル
女子高生
おねーさん

(画像URL:illust-AC 様:南見まめこさん)

この中から、名前に「イ」を含むものを検索して表示します。結果は「メド」と「アドル」の2つがヒットします。

<出力サンプル>

(画像URL:illust-AC 様:南見まめこさん)


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

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