libro
www.tuyano.com
Google androidプログラミング入門

データベースを使おう! (8/8)

作成:2009-12-28 11:23
更新:2011-07-08 16:29

■メモをテーブルから検索する

続いて、テーブルからメモを検索し表示する「loadText」です。まず、検索するテキストを用意し、それかられいによってSQLiteDatabaseインスタンスを取得します。
String m = edit.getText().toString();
SQLiteDatabase db = dbhelper.
    getWritableDatabase();
続いて、実行するクエリーをStringで用意します。データの検索は、「select * from テーブル where 検索条件」といった形でクエリーを用意します。ここでは検索条件に「memo like %検索文字%」といった式を指定しています。これは、いわゆる「あいまい検索」というやつで、検索文字を含むレコードをすべて取り出すものです。
String query = "select * from " + DatabaseHelper.TABLE_NAME +
    " where " + DatabaseHelper.MEMO + " like '%" + m + "%';";
クエリーが準備できたら、実行します。ただし、execSQLは使いません。今回は、単に実行するだけでなく、結果(検索されたレコード)を受け取って処理しないといけません。こういう場合には「rawQuery」というメソッドが便利です。
Cursor c = db.rawQuery(query, null);
これは、第1引数にクエリーを指定します。第2引数は、クエリー内に埋め込まれた「?」にはめ込むString配列です。ここでは特に使ってないのでnullにしてあります。

実行結果は「Cursor」というクラスのインスタンスとして返されます。これは、たくさんのレコードを管理する働きをもつクラスです。レコード群の1つ1つを選択したり移動したりすることができ、選択されたレコードの値を取り出し処理します。
if (c.moveToFirst()){
    edit.setText(c.getString(1) + "\n" + c.getString(2));
}
ここでは「moveToFirst」というメソッドで1番最初のレコードを選択しています。もし選択できない(つまりレコードがない)場合はfalseが返されるので、trueの場合にのみ処理を実行させるようにすればいいでしょう。同様に、「moveToLast」「moveToPrevious」「moveToNext」といったものも用意されています。これらを使うことで、自由にレコードの選択位置を移動できるでしょう。

保管されている値は「getString」で取り出せます。例えばgetString(1)とすれば、1番のフィールドからString値を取り出します。同様のものに、整数値を取り出す「getShort」「getInt」「getLong」、実数値を取り出す「getFloat」、現在位置を調べる「getPosition」、項目数を返す「getCount」といったメソッドがあります。これらを使うことで、基本的な値はだいたい取得できるでしょう。

データベースを活用するには、この他にも「レコードの更新」「レコードの削除」などの機能が必要でしょう。が、基本的な使い方がわかれば、クエリーを送ってこれらの処理をさせることができるようになるはずですよ。
(by. SYODA-Tuyano.)

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

public void loadText() throws IOException{
    String m = edit.getText().toString();
    SQLiteDatabase db = dbhelper.getWritableDatabase();
    String query = "select * from " + DatabaseHelper.TABLE_NAME +
        " where " + DatabaseHelper.MEMO + " like '%" + m + "%';";
     Cursor c = db.rawQuery(query, null);
    if (c.moveToFirst()){
        edit.setText(c.getString(1) + "\n" + c.getString(2));
    }
}
※関連コンテンツ

<< prev next >>

「Google androidプログラミング入門」に戻る