Androidアプリ開発者のためのTips集。Androidアプリケーションで使用できるデータベース「SQLite」について。まずは、データベースの基本操作について解説する。
用途 | 基本 |
---|---|
カテゴリ | データ処理 |
レベル | 初級 |
動作確認環境 | Android 2.3.3(GingerBread) エミュレータにて動作確認 |
備考 | 今回のTipsは上記環境で動作確認・検証を行っています |
Androidを採用するメリットの1つが、データベースを利用したアプリケーションを簡単に作れることだ。今回は、Androidアプリケーションで使用できるデータベース「SQLite」の基本操作を紹介する。
Androidには、SQLiteというデータベースが組み込まれており、アプリケーションから自由に利用できる。
SQLiteは、Android専用に作られたものではない。組み込みアプリケーションなどで使用されている軽量データベースである。ライブラリとしてアプリケーションに直接組み込めるので、DBMS(DataBase Management System)サーバなどを介さずに手軽に使用できるのが大きな特徴だ。
機能的には、一般的なデータベースと同様に「検索」「挿入」「更新」「削除」といった一通りの処理が行える他、バイナリデータの格納、トランザクションなども備える。
Androidアプリケーションで、データベース操作を行うには、「SQLiteDatabase」クラスを使用する。そして、このSQLiteDatabaseクラスのインスタンスを取得するための手順を簡略化してくれるのが、「SQLiteOpenHelper」クラスだ。
データベースを使用するには、まずデータベースを保存するファイルを作成し、次にデータを格納するテーブルを定義し……といった準備が必要になる。SQLiteOpenHelperクラスを使用することで、こうした煩わしい初期処理を自動化できる。
SQLiteOpenHelperは、abstractなクラスであり、以下のような実装を追加しておくと、必要なタイミングでデータベースの初期処理を実行してくれる。
以下に、SQLiteOpenHelperのサブクラスの実装例を示す。この例では、“sample.db”という名前のデータベースを作成し、“name_book_table”テーブルを定義している。“name_book_table”は、人の名前(name)と年齢(age)を格納するための簡単なテーブルだ。
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class NameBookDBHelper extends SQLiteOpenHelper { // コンストラクタ public NameBookDBHelper( Context context ){ // 任意のデータベースファイル名と、バージョンを指定する super( context, "sample.db", null, 1 ); } /** * このデータベースを初めて使用する時に実行される処理 * テーブルの作成や初期データの投入を行う */ @Override public void onCreate( SQLiteDatabase db ) { // テーブルを作成。SQLの文法は通常のSQLiteと同様 db.execSQL( "create table name_book_table (" + "_id integer primary key autoincrement not null, " + "name text not null, " + "age integer )" ); // 必要なら、ここで他のテーブルを作成したり、初期データを挿入したりする } /** * アプリケーションの更新などによって、データベースのバージョンが上がった場合に実行される処理 * 今回は割愛 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 取りあえず、空実装でよい } }
データベースのファイル名とバージョン番号は、コンストラクタで指定している。このクラス(NameBookDBHelper)を使って実際にデータベースをオープンする際、万一、指定した名前のファイルが存在しない場合は自動的に作成してくれる。
データベースファイルを作成した直後に、onCreate()メソッドが呼ばれ、そこに記述されているテーブル作成の処理などが実行される。なお、テーブルの作成には、SQLiteDatabaseのexecSQL()メソッドを使用している。execSQL()は、SQLをそのまま実行するメソッドだ。
onUpgrade()メソッドは、今回は特に何も実装していない。ソースコード上のコメントにも記述したが、このメソッドはデータベースバージョンの更新時に実行される処理なので今回は割愛している。
SQLiteOpenHelper(のサブクラス)を使って、実際にデータベースを開くには、getWritableDatabase()メソッドを使用する。
// Helperを使用してデータベースを開く NameBookDBHelper dbHelper = new NameBookDBHelper( context ); SQLiteDatabase db = dbHelper.getWritableDatabase();
無事データベースのオープンに成功すると、SQLiteDatabaseのオブジェクトが返ってくる。このオブジェクトを使用して、データベースのさまざまな処理を実行する。
以降で、SQLiteDatabaseオブジェクトを使ったデータベース操作について説明する。
Copyright © ITmedia, Inc. All Rights Reserved.