Android StudioでDB保存機能を実装するDBヘルパー!
ToDoリストアプリを作ってみたい!
でも、アプリを再起動したらデータが消えてしまう…そんな壁にぶつかった方へ🚧
今回は、Androidアプリにデータ保存機能を実装するための「DBヘルパー」について解説します📂
以下のような方におすすめ👇
- SQLiteでデータを保存する理由が知りたい
- Android StudioでDBを扱う基本構成を理解したい
- SQLiteOpenHelperの書き方がまだ曖昧
- Javaのextends・コンストラクタの基礎もおさらいしたい
🔎 Javaでデータベースを使用する理由
一時的ならメモ帳ファイルに保存してもOK。
でもアプリを終了して再起動すると、メモがすべて消えてしまう…💥
次回起動時にもメモを表示したいなら、データはファイルやDBに保存しておく必要があります。
純粋なテキスト保存でもOKですが、
- 条件でデータを抽出したい
- 一覧をソートしたい
といった応用がしたくなる場面が出てきます。
🧱 AndroidアプリでDB操作にDBヘルパーが必要な理由
Android StudioでSQLiteを扱うには、まずDBヘルパーという仕組みを作る必要があります💡
これは、次のような流れを作るため👇
📱 MainActivity → 📂 DBヘルパー → 📊 データベース
直接DBを操作するのではなく、ヘルパーを通じてアクセスするのが鉄則なんです。
💡 ポイント
- DBヘルパーはJavaクラスとして新規ファイルで作成
- クラス名とファイル名は一致(例:MemoDatabaseHelper.java)
- 1ファイルに1つのpublicクラスのみOK!←Javaのルール
✍️ MemoDatabaseHelperの基本構成
以下が今回作成したDBヘルパークラスの基本構成です👇
public class MemoDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_FILE_NAME = "memo_data.db";
private static final int DATABASE_VERSION = 1;
static final String TABLE_NAME = "memo_data";
static final String ITEM_ID = "_id";
static final String ITEM_MEMO = "memo";
static final String ITEM_START_DATE = "start_date";
static final String ITEM_COMPLETE_DATE = "complete_date";
static final String ITEM_AUTHOR = "author";
static final String ITEM_CHECKER = "checker";
static final String ITEM_FLAG = "flag";
static final String ITEM_GROUP = "group_name";
static final String ITEM_PRIORITY = "priority";
public MemoDatabaseHelper(@Nullable Context context) {
super(context, DATABASE_FILE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// テーブル作成
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// テーブル更新
}
}
👨👦 「extends SQLiteOpenHelper」って何?
extends
は、「このクラスはSQLiteOpenHelperの子ですよ」という意味👶
つまり、親クラス(SQLiteOpenHelper)の機能を受け継ぐという宣言です。
ポイントは以下👇
- 親クラスの便利な機能を流用できる
- 必要な部分だけ自分で上書きしてカスタマイズ可能
🛠️ 上書き必須な2つのメソッド(onCreate / onUpgrade)
extends SQLiteOpenHelper
を使ったら、必ず次の2つを実装する必要があります👇
@Override
public void onCreate(SQLiteDatabase db) {
// 初回DB作成時の処理
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// バージョンアップ時の処理
}
これらは親クラスに定義されている抽象メソッドで、
「子クラスで必ず中身を記述してね!」と指定されています📝
もし書かないと…❌ コンパイルエラーになります!
🧪 最後に出てきた「コンストラクタ」って何?
こちらがコンストラクタ👇
public MemoDatabaseHelper(@Nullable Context context) {
super(context, DATABASE_FILE_NAME, null, DATABASE_VERSION);
}
クラス名と同じ名前の特殊なメソッドで、
クラスのインスタンスが作られたときに自動で呼び出されます🔄
今回の例では、以下のような初期設定を行っています👇
- データベースのファイル名(
memo_data.db
) - バージョン番号(1)
✅まとめ:DBヘルパーの理解はアプリの土台作り!
📌 今回の要点を振り返ると…
- SQLiteで保存すれば再起動後もデータが残る
- DB操作はDBヘルパーを通すのがAndroid流
- extends SQLiteOpenHelperで便利機能を受け継ぐ
- onCreate / onUpgradeは必ず実装するべし
- コンストラクタは初期設定のための特別な関数
🔗 Android Studioを使った無料アプリ開発完全ガイド👇
