Library androidx.sqlite
berisi antarmuka abstrak beserta implementasi dasar yang dapat digunakan untuk membuat library Anda sendiri yang mengakses SQLite. Sebaiknya Anda menggunakan library Room yang menyediakan
lapisan abstraksi pada SQLite untuk memungkinkan akses database yang lebih andal sambil
memanfaatkan kemampuan penuh SQLite.
Menyiapkan dependensi
Versi androidx.sqlite
saat ini yang mendukung Multi-Platform
(KMP) Kotlin adalah 2.5.0-alpha01 atau yang lebih tinggi.
Untuk menyiapkan SQLite dalam project KMP, tambahkan dependensi untuk artefak
dalam file build.gradle.kts
untuk modul Anda:
androidx.sqlite:sqlite
- Antarmuka Driver SQLiteandroidx.sqlite:sqlite-bundled
- Implementasi driver yang dipaketkan
SQLite Driver API
Grup library androidx.sqlite
menawarkan API tingkat rendah untuk berkomunikasi dengan
library SQLite, baik yang disertakan dalam library saat menggunakan
androidx.sqlite:sqlite-bundled
maupun di platform host, seperti Android atau iOS
saat menggunakan androidx.sqlite:sqlite-framework
. API ini mengikuti fungsi inti
dari SQLite C API.
Ada 3 antarmuka utama:
SQLiteDriver
- Ini adalah titik entri untuk menggunakan SQLite dan bertanggung jawab untuk membuka koneksi database.SQLiteConnection
- Adalah representasi dari objeksqlite3
.SQLiteStatement
- Adalah representasi dari objeksqlite3_stmt
.
Contoh berikut menampilkan API inti:
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()
}
Serupa dengan SQLite C API, penggunaan yang umum adalah untuk:
- Buka koneksi database menggunakan implementasi
SQLiteDriver
yang dibuat instance-nya. - Siapkan pernyataan SQL menggunakan
SQLiteConnection.prepare()
- Jalankan
SQLiteStatement
dengan:- Secara opsional, argumen binding menggunakan fungsi
bind*()
. - Melakukan iterasi pada hasil yang ditetapkan menggunakan fungsi
step()
. - Membaca kolom dari kumpulan hasil menggunakan fungsi
get*()
.
- Secara opsional, argumen binding menggunakan fungsi
Implementasi Pengemudi
Tabel berikut merangkum implementasi driver yang tersedia:
Nama Kelas |
Artefak |
Platform yang Didukung |
AndroidSQLiteDriver |
androidx.sqlite:sqlite-framework |
Android |
NativeSQLiteDriver |
androidx.sqlite:sqlite-framework |
iOS, Mac, dan Linux |
BundledSQLiteDriver |
androidx.sqlite:sqlite-bundled |
Android, iOS, Mac, Linux, dan JVM (Desktop) |
Penerapan yang direkomendasikan untuk digunakan adalah BundledSQLiteDriver
yang tersedia di
androidx.sqlite:sqlite-bundled
. Library ini menyertakan library SQLite yang dikompilasi dari
sumber, menawarkan versi dan konsistensi terbaru di semua
platform KMP yang didukung.
Driver dan Room SQLite
API driver berguna untuk interaksi tingkat rendah dengan database SQLite. Untuk library kaya fitur yang memberikan akses SQLite yang lebih andal, Room direkomendasikan.
RoomDatabase
bergantung pada SQLiteDriver
untuk menjalankan operasi database dan
implementasi harus dikonfigurasi menggunakan
RoomDatabase.Builder.setDriver()
. Room menyediakan
RoomDatabase.useReaderConnection
dan
RoomDatabase.useWriterConnection
untuk akses langsung yang lebih besar ke koneksi
database terkelola.