androidx.sqlite
ライブラリには抽象的なインターフェースと基本的な実装が含まれており、これを使用して SQLite にアクセスする独自のライブラリを構築できます。Room ライブラリの使用を検討することをおすすめします。このライブラリは、SQLite に抽象化レイヤを提供することで、より堅牢なデータベース アクセスを可能にし、SQLite を最大限に活用できるようにします。
依存関係の設定
Kotlin マルチプラットフォーム(KMP)をサポートする androidx.sqlite
の現在のバージョンは 2.5.0-alpha01 以降です。
KMP プロジェクトで SQLite をセットアップするには、モジュールの build.gradle.kts
ファイルにアーティファクトの依存関係を追加します。
androidx.sqlite:sqlite
- SQLite ドライバ インターフェースandroidx.sqlite:sqlite-bundled
- バンドルされているドライバの実装
SQLite ドライバ API
androidx.sqlite
ライブラリ グループには、SQLite ライブラリ(androidx.sqlite:sqlite-bundled
を使用している場合)またはホスト プラットフォーム(androidx.sqlite:sqlite-framework
を使用する場合は Android や iOS など)に含まれる SQLite ライブラリと通信するための低レベル API が用意されています。これらの API は、SQLite C API のコア機能と密接に関連しています。
主なインターフェースは次の 3 つです。
SQLiteDriver
- SQLite を使用するためのエントリ ポイントであり、データベース接続を開きます。SQLiteConnection
-sqlite3
オブジェクトの表現です。SQLiteStatement
-sqlite3_stmt
オブジェクトの表現です。
次の例は、コア API を示しています。
fun main() {
val databaseConnection = BundledSQLiteDriver().open("todos.db")
databaseConnection.execSQL(
"CREATE TABLE IF NOT EXISTS Todo (id INTEGER PRIMARY KEY, content TEXT)"
)
databaseConnection.prepare(
"INSERT OR IGNORE INTO Todo (id, content) VALUES (? ,?)"
).use { stmt ->
stmt.bindInt(index = 1, value = 1)
stmt.bindText(index = 2, value = "Try Room in the KMP project.")
stmt.step()
}
databaseConnection.prepare("SELECT content FROM Todo").use { stmt ->
while (stmt.step()) {
println("Action item: ${stmt.getText(0)}")
}
}
databaseConnection.close()
}
SQLite C API と同様に、一般的な使用方法は次のとおりです。
- インスタンス化された
SQLiteDriver
実装を使用してデータベース接続を開きます。 SQLiteConnection.prepare()
を使用して SQL ステートメントを準備する- 次の方法で
SQLiteStatement
を実行します。- 必要に応じて、
bind*()
関数を使用して引数をバインドします。 step()
関数を使用して結果セットを反復処理する。get*()
関数を使用して結果セットから列を読み取ります。
- 必要に応じて、
ドライバの実装
次の表は、利用可能なドライバの実装をまとめたものです。
クラス名 |
アーティファクト |
対応プラットフォーム |
AndroidSQLiteDriver |
androidx.sqlite:sqlite-framework |
Android |
NativeSQLiteDriver |
androidx.sqlite:sqlite-framework |
iOS、Mac、Linux |
BundledSQLiteDriver |
androidx.sqlite:sqlite-bundled |
Android、iOS、Mac、Linux、JVM(パソコン) |
推奨される実装は、androidx.sqlite:sqlite-bundled
にある BundledSQLiteDriver
です。これにはソースからコンパイルされた SQLite ライブラリが含まれており、サポートされているすべての KMP プラットフォームの最新バージョンと整合性を提供します。
SQLite ドライバと Room
ドライバ API は、SQLite データベースとの低レベルの操作に役立ちます。SQLite へのより堅牢なアクセスを提供する機能が豊富なライブラリの場合は、Room をおすすめします。
RoomDatabase
は SQLiteDriver
を使用してデータベース オペレーションを実行します。実装は RoomDatabase.Builder.setDriver()
を使用して構成する必要があります。Room には、マネージド データベース接続に直接アクセスするための RoomDatabase.useReaderConnection
と RoomDatabase.useWriterConnection
が用意されています。