AndroidでSQLiteデータベースを利用する(その1)

Androidでデータベースを利用するにあたって重要なクラスは、SQLiteOpenHelperクラスとSQLiteDatabaseクラスである。

[SQLiteOpenHelperクラス]
http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html

[SQLiteDatabaseクラス]
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

SQLiteOpenHelperクラスはデータベース作成およびバージョン管理をしてくれるヘルパークラスである。
データベースが存在するならば開き、存在しなければ作成を行い、さらに必要に応じてアップグレードするといった処理をより簡単に実現してくれる。
その上で、SQLiteOpenHelperのメソッドを使用し、直接的なデータベース操作(挿入・検索・削除)を行うSQLiteDatabaseクラスのインスタンスを取得することになる。


/**
 * SQLiteOpenHelperのサブクラスSampleSQLiteOpenHelperの実装
 */
class SampleSQLiteOpenHelper extends SQLiteOpenHelper {
	
	// コンストラクタ
	public SampleSQLiteOpenHelper(Context c) {
		super(c, "sqlite_sample.db", null, 1);
	}
	
	/**
	 * データベースファイル初回使用時に実行される処理
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		// テーブル作成のクエリを発行
		db.execSQL(
			"create table sample_table ( " +
			"_id integer primary key autoincrement, " +
			"data integer not null );");
	}
	
	/**
	 * データベースのバージョンアップ時に実行される処理
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// テーブルの破棄と再作成
		db.execSQL("drop table sample_table;");
		onCreate(db);
	}
}

例えば、上記のようにSQLiteOpenHelperのサブクラスを実装する。

コンストラクタでコンテキスト、データベース名、バージョン番号を渡している。
第三引数にはSQLiteDatabase.CursorFactroy型の引数を渡すことになるのだが、基本的にnullでよい。

onCreate()はデータベースファイルが初めて使用される際に自動で呼ばれるため、一般的にはテーブル作成の処理を記述することになる。

onUpgrade()はデータベースバージョンが更新された際に呼ばれるメソッドである。
今回はテーブルの破棄と再作成を行うように記述してみた。


SQLiteOpenHelperのサブクラス実装ができたら、いよいよデータベース操作を行うために、SQLiteDatabaseのインスタンスを取得する。

// SampleSQLiteOpenHelperのインスタンス生成
SampleSQLiteOpenHelper hlpr = new SampleSQLiteOpenHelper(getApplicationContext());
// getWritableDatabase()を使用してデータベースを開き、SQLiteDatabaseのインスタンス取得
SQLiteDatabase db = hlpr.getWritableDatabase();


あとは、dbインスタンスを使用して、データベースに対する操作を行うことになる。
つづく。