連載
» 2009年05月20日 00時00分 公開

Androidで動く携帯Javaアプリ作成入門(6):AndroidでSQLiteのDB操作をするための基礎知識 (3/3)

[緒方聡,株式会社イーフロー]
前のページへ 1|2|3       

データベースの削除はエミュレータのManage Applicationsから行おう

 なお、アプリケーションをアンインストールするとファイルとして作成したデータベースも自動的に削除されるので、ご安心ください。また、削除はAndroid SDKのDDMS(Dalvik Debug Monitor Service)からではなく、Androidエミュレータの[Manage Applications]から行ってください。

図3 Androidのアプリ削除画面(データベースをファイルで持った場合) 図3 Androidのアプリ削除画面(データベースをファイルで持った場合)

 DDMSからアプリの削除を行うと、アプリケーションが作成したデータベースやファイルは削除されませんので、注意が必要です。

検索はSQL文でも繰り返しバインドでも

 最もよく使うSQL文は、INSERT文やDELETE文、UPDATE文、SELECT文ですが、既出のSQLiteDatabase#execSQL(String)では、SELECT文は使用できません。SQLiteStatementでも同様に、SELECT文は使用できません。ほかのSQL文と異なり、SELECT文は結果を返すためです。

 SELECT文を実行するには、SQLiteDatabaseに複数用意されているqueryメソッドrawQueryメソッドを使用します。

メソッド 説明
query 簡単な検索ならこれが使いやすい。ただし、使いにくいが複雑な検索も可能
rawQuery SQL文を渡して、データもバインドできるので、複雑な検索や一部条件だけ異なる繰り返しの検索などに便利
表2 検索メソッド

 例えば、以下のようなSQLならrawQueryの方が断然分かりやすいですね。

// rawQueryでSELECTを実行
String sql = “select foo.a, bar.b from foo, bar where foo.a = bar.a;”;
Cursor c = db.rawQuery(sql, null);
// queryでSELECTを実行
String table = “foo, bar”;
String[] columns = {“foo.a”, “bar.b”};
String selection = “foo.a = bar.a”;
Cursor c = db.query(table, columns, selection, null, null, null, null);

検索結果の取り扱い

 検索した結果は、Cursorという形で取得できます。カーソルの概念は下の図のような感じです。

図4 カーソルの概念図 図4 カーソルの概念図

 結果のリストとそのリストを指すカーソルがあって、カーソルを動かしながら結果を取り出すというような処理をします。

ソースコードで見てみると

 実際の処理を見てみましょう。

Cursor c = db.query("capitals", new String[] {"prefecture"}, null, null, null, null, null);
c.moveToFirst();
CharSequence[] list = new CharSequence[c.getCount()];
for (int i = 0; i < list.length; i++) {
    list[i] = c.getString(0);
    c.moveToNext();
}
c.close();

 queryメソッドでカーソルを取得して、moveToFirstメソッドでカーソルを先頭に移動しています。次に、getCountメソッドで結果の数を取得し、その数分だけカーソルをmoveToNextメソッドで移動しながら、getStringメソッドで結果を取り出しています。最後に、closeメソッドでカーソルを閉じておしまいです。

Androidでこれまでにないデータ表現を

 Androidのデータベースの使用方法はいかがだったでしょうか? 思ったより簡単だったという印象ではないかと思います。データベースを使用すると、とても強力なデータ表現が可能になります。アイデア次第でこれまでになかったアプリケーションが作成できるようになるでしょう。

 次回は、Androidアプリケーションから扱えるサービスについて解説します。楽しみにお待ちください。


「Androidで動く携帯Javaアプリ作成入門」バックナンバー
前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。