AndroidアプリでSQLiteデータベースを使用する方法
Android アプリでデータベースを使用する
SQLite データベースとは
SQLite は、軽量で使いやすいオープンソースのデータベースエンジンです。Android には SQLite が標準搭載されているため、追加のライブラリをインストールする必要はありません。
データベースの作成
SQLite データベースを作成するには、以下の手順が必要です。
- アプリプロジェクトに
database
という名前のディレクトリを作成します。 - データベースファイルを作成します。拡張子は
.db
です。 - データベースファイルへのアクセスを許可するために、データベースファイルのパーミッションを設定します。
データベースへの接続には、SQLiteDatabase
クラスを使用します。
SQLiteDatabase db = openOrCreateDatabase("database.db", MODE_PRIVATE, null);
データベースへの接続が確立したら、以下の操作を実行できます。
- データの挿入
db.execSQL("INSERT INTO table (name, age) VALUES (?, ?)", new String[] {"John", "30"});
- データの取得
Cursor cursor = db.rawQuery("SELECT * FROM table", null);
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
// ...
}
- データの更新
db.execSQL("UPDATE table SET name = ? WHERE age = ?", new String[] {"John", "30"});
- データの削除
db.execSQL("DELETE FROM table WHERE age = ?", new String[] {"30"});
データベースのクローズ
データベースへの操作が完了したら、データベースを閉じる必要があります。
db.close();
SQLite 以外にも、Android アプリで利用可能なデータベースはいくつかあります。
- Room: SQLite データベースを抽象化するライブラリ
- Realm: オブジェクト指向データベース
- Firebase Realtime Database: リアルタイムデータベース
public class MainActivity extends AppCompatActivity {
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// データベースを開く
db = openOrCreateDatabase("database.db", MODE_PRIVATE, null);
// テーブルを作成する
db.execSQL("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)");
// データを挿入する
db.execSQL("INSERT INTO users (name, age) VALUES (?, ?)", new String[] {"John", "30"});
// データを取得する
Cursor cursor = db.rawQuery("SELECT * FROM users", null);
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
// データを表示する
Log.d("MainActivity", "name: " + name + ", age: " + age);
}
// データベースを閉じる
db.close();
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
実行方法
- Android Studio で新しいプロジェクトを作成します。
- 上記のコードを
MainActivity.java
とactivity_main.xml
にコピーします。 - アプリを実行します。
説明
openOrCreateDatabase()
メソッドを使用して、データベースを開きます。execSQL()
メソッドを使用して、テーブルを作成します。rawQuery()
メソッドを使用して、データを取得します。close()
メソッドを使用して、データベースを閉じます。
Room
Room は、SQLite データベースを抽象化するライブラリです。Room を使用すると、SQL クエリを書くことなく、データベース操作を行うことができます。
メリット
- SQL クエリを書く必要がない
- 型安全
- コード量が少なくなる
- SQLite よりも機能が少ない
- 学習コストがかかる
Realm
Realm は、オブジェクト指向データベースです。Realm を使用すると、データベースをオブジェクトとして操作することができます。
- オブジェクト指向で使いやすい
- リアルタイム同期
- 高速なパフォーマンス
- ライブラリのサイズが大きい
- オープンソースではない
Firebase Realtime Database
Firebase Realtime Database は、リアルタイムデータベースです。Firebase Realtime Database を使用すると、クライアントとサーバー間のデータ変更をリアルタイムに同期することができます。
- オフライン対応
- スケーラビリティ
- 無料プランではデータ量が制限されている
- 複雑なクエリが実行できない
選択方法
どの方法を選択するかは、アプリの要件によって異なります。以下の点を考慮して選択してください。
- アプリで必要な機能
- 開発者のスキル
- コスト
android android-sqlite android-database