Androidで動く携帯Javaアプリ作成入門
Androidで動く携帯Javaアプリ作成入門(6)

AndroidでSQLiteのDB操作をするための基礎知識


株式会社イーフロー
緒方聡
2009/5/20
- PR -

データベースの削除はエミュレータの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メソッドを使用します。

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

 例えば、以下のような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アプリケーションから扱えるサービスについて解説します。楽しみにお待ちください。

@IT関連記事


Google Android用携帯アプリ作成のための基礎知識
小山博史のJavaを楽しむ(9) 
先日公開されたGoogleの携帯端末プラットフォームAndroid。開発環境の整え方やアプリの作り方、作成に便利なツール、SDKの中身などを解説
Java Solution」フォーラム 2007/12/3
Androidアプリで高速描画チューニングをするコツ
インタビュー特集:Google直伝!(1) Googleのさまざまなサービスを使いこなすコツをグーグル担当者に聞くインタビュー。初回は日本で端末販売がせまるAndroidについて
リッチクライアント & 帳票」フォーラム 2009/4/21
Androidのオープン性でガラパゴスから脱出しよう
ものになるモノ、ならないモノ(29)
 ガラパゴスとやゆされる日本の高機能ケータイ。閉塞感に満ちた国内市場から世界に出るための解は、Androidのオープン性にある
Master of IP Network」フォーラム 2008/12/1
Androidは雇い主の分身として仕事をするエージェント
Google Developer Day 2008特集(1) Androidの生みの親、アンディ・ルービン氏が、Androidに込めた思いと展望を語る。「Google Android入門」の著者の嶋氏が聞く
リッチクライアント & 帳票」フォーラム 2008/6/13
“非ケータイ”で輝くAndroidの秘めたる可能性
開催直前! ESEC2009速報
 富士通ソフトウェアテクノロジーズは携帯電話機向けプラットフォーム「Android」を携帯電話以外の組み込み機器に適用する取り組みを行っている
/fjava/index/index_eclipsejava.html 携帯アプリを作って学ぶJava文法の基礎
Java文法の基礎を楽しみながら学ぶために、携帯電話のJavaアプリを作ってみましょう。携帯電話のJavaだけにとどまらないJava全般の文法の基礎が理解できる初心者向け入門連載です
新時代の業務用モバイルRIAを考える
iPhoneやAndroid、ネットブックの登場で盛り上がるモバイル業界。本特集では「業務でのモバイル利用」において、どの端末やプラットフォームを検討すべきか、また使い勝手において重要なUIのあり方などについて考察する

1-2-3

 Index
第6回 AndroidでSQLiteのDB操作をするための基礎知識
  Page1
Androidのデータベースも、いま流行中の「SQLite」
Androidでデータベースを使う際の3つのポイント
コラム 「Android SDK 1.5 r1を使う際の注意点」
  Page2
データベース操作サンプルの画面構成とスキーマ
Androidのデータベースを作成するには?
トランザクションとプリコンパイルステートメントとは?
データベースの保存場所はメモリ? ストレージ?
Page3
検索はSQL文でも繰り返しバインドでも
Androidでこれまでにないデータ表現を


Androidで動く携帯Javaアプリ作成入門 バックナンバー 連載インデックスへ»


ご意見、ご感想は Smart&Social 会議室へどうぞ


 Smart&Social フォーラム トップページへ


TechTargetジャパン

Smart & Social フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH