【SQLiteでデータが消えないToDoリストを作る】初心者でもできるAndroidアプリ開発📱✨
アプリを再起動したら入力したメモが消えてしまった…。
そんな経験をしたあなたへ。
Android開発では、データを永続的に保存する仕組みを理解することが、アプリを「本当に使える」ものに変える第一歩です💡
この記事では、SQLiteとDBヘルパー(SQLiteOpenHelper)を使って、データが消えないToDoリストアプリを作る方法をわかりやすく解説します。
多くの初心者がつまずくポイントを丁寧に整理し、Javaのextends構文やコンストラクタの仕組みなども一緒に学べます。
専門用語が多くて不安なあなたでも大丈夫です✨
◉ SQLiteでデータを保存する仕組みが理解できる
◉ DBヘルパーの役割と構成がスッキリわかる
◉ onCreate / onUpgradeの違いと実装の意味がつかめる
◉ 再起動してもデータが消えないアプリ構造を体験できる
この記事を読むことで、あなたはアプリ開発の土台をしっかり理解し、安定したToDoアプリを作れる力が身につきます。
難しそうに見えるデータベース処理も、基本を押さえればシンプルに感じられるはずです💪
🔎【SQLiteで永続化】再起動でも消えないToDoリストの理由と導入メリット📱
一時的ならメモ帳ファイルに保存してもOK。
でもアプリを終了して再起動すると、メモがすべて消えてしまう…💥
次回起動時にもメモを表示したいなら、データはファイルやDBに保存しておく必要があります。
純粋なテキスト保存でもOKですが、
◉ 条件でデータを抽出したい
◉ 一覧をソートしたい
といった応用がしたくなる場面が出てきます。
🧱【DBヘルパーとは】Android Studioで必須な理由と得られる効果💡
Android StudioでSQLiteを扱うには、まずDBヘルパーという仕組みを作る必要があります💡
これは、次のような流れを作るため👇
📱 MainActivity → 📂 DBヘルパー → 📊 データベース
直接DBを操作するのではなく、ヘルパーを通じてアクセスするのが鉄則なんです。
💡 ポイント
◉ DBヘルパーはJavaクラスとして新規ファイルで作成
◉ クラス名とファイル名は一致(例:MemoDatabaseHelper.java)
◉ 1ファイルに1つのpublicクラスのみOK!←Javaのルール
✍️【DBヘルパーの作り方】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) {
// テーブル更新
}
}| フィールド | 説明 |
|---|---|
| DATABASE_FILE_NAME | データベースファイル名(例:memo_data.db) |
| DATABASE_VERSION | データベースのバージョン管理用 |
| TABLE_NAME | テーブル名(例:memo_data) |
| ITEM_ID | 主キー(ID) |
| ITEM_MEMO | メモ内容 |
| ITEM_START_DATE | 開始日 |
| ITEM_COMPLETE_DATE | 完了日 |
| ITEM_AUTHOR | 作成者 |
| ITEM_CHECKER | チェッカー |
| ITEM_FLAG | 状態フラグ |
| ITEM_GROUP | グループ名 |
| ITEM_PRIORITY | 優先度 |
👨💻【extends継承】SQLiteOpenHelperで効率化する実装ポイントと活用メリット⚙️
extendsは、「このクラスはSQLiteOpenHelperの子ですよ」という意味👶
つまり、親クラス(SQLiteOpenHelper)の機能を受け継ぐという宣言です。
ポイントは以下👇
◉ 親クラスの便利な機能を流用できる
◉ 必要な部分だけ自分で上書きしてカスタマイズ可能
🛠️【onCreate/onUpgrade】必須実装で失敗しない安全なDBマイグレーション設計🔄
extends SQLiteOpenHelper を使ったら、必ず次の2つを実装する必要があります👇
@Override
public void onCreate(SQLiteDatabase db) {
// 初回DB作成時の処理
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// バージョンアップ時の処理
}これらは親クラスに定義されている抽象メソッドで、
「子クラスで必ず中身を記述してね!」と指定されています📝
もし書かないと…❌ コンパイルエラーになります!
🧪【コンストラクタ入門】SQLiteOpenHelper初期化の理解ポイントと実装の勘所🧠
こちらがコンストラクタ👇
public MemoDatabaseHelper(@Nullable Context context) {
super(context, DATABASE_FILE_NAME, null, DATABASE_VERSION);
}クラス名と同じ名前の特殊なメソッドで、
クラスのインスタンスが作られたときに自動で呼び出されます🔄
今回の例では、以下のような初期設定を行っています👇
◉ データベースのファイル名(memo_data.db)
◉ バージョン番号(1)
✅【DBヘルパーの効果】ToDoが消えない安定動作/拡張性/開発効率の向上🚀
📌 今回の要点を振り返ると…
◉ SQLiteで保存すれば再起動後もデータが残る
◉ DB操作はDBヘルパーを通すのがAndroid流
◉ extends SQLiteOpenHelperで便利機能を受け継ぐ
◉ onCreate / onUpgradeは必ず実装するべし
◉ コンストラクタは初期設定のための特別な関数
🧯【よくあるエラー】DB接続やバージョン管理で失敗しないコツ⚠️
SQLiteを使い始めた初心者がよく遭遇するエラーを整理します。
同じようなミスを避けるために、以下を意識しておきましょう💡
◉ DBファイルが生成されない → getWritableDatabase()の呼び出しを確認
◉ テーブルが作成されない → onCreate()内のSQL文の記述を再チェック
◉ バージョン変更しても更新されない → DATABASE_VERSIONを上げる必要あり
◉ アプリを再インストールしてもデータが残る → デバッグ時はclearDataで初期化
🔗【学習ロードマップ】Androidアプリ開発の始め方とToDo完成までの道筋🧭
Android Studioを使えば、プログラミング初心者でも無料で本格的なAndroidアプリを作れます。
とくに、メモ帳アプリやToDoアプリは構造がシンプルで学習にもぴったりです。
下記の記事では、以下のステップでアプリ開発の流れを詳しく紹介します👇
◉ Android Studioの基本操作と開発環境の整え方
◉ XMLレイアウトやボタン操作・画面遷移の基礎
◉ ListViewやArrayAdapterの使い方
◉ SQLiteによるデータ保存で実用的なアプリへ
◉ Google Playへの公開を目指す手順




コメント