Library androidx.sqlite
berisi antarmuka abstrak beserta implementasi dasar yang dapat digunakan untuk membuat library Anda sendiri yang mengakses SQLite. Anda mungkin ingin mempertimbangkan untuk menggunakan library Room yang menyediakan
lapisan abstraksi pada SQLite untuk memungkinkan
akses database yang lebih kuat sekaligus
memanfaatkan kemampuan penuh SQLite.
Menyiapkan dependensi
Versi androidx.sqlite
saat ini yang mendukung Multi-Platform Kotlin
(KMP) adalah 2.5.0-alpha01 atau yang lebih tinggi.
Untuk menyiapkan SQLite dalam project KMP Anda, tambahkan dependensi untuk artefak
dalam file build.gradle.kts
untuk modul Anda:
androidx.sqlite:sqlite
- Antarmuka Driver SQLiteandroidx.sqlite:sqlite-bundled
- Implementasi driver paket
SQLite Driver API
Grup library androidx.sqlite
menawarkan API tingkat rendah untuk berkomunikasi dengan
library SQLite yang disertakan dalam library
androidx.sqlite:sqlite-bundled
atau di platform host, seperti Android atau iOS
saat menggunakan androidx.sqlite:sqlite-framework
. API ini mengikuti poin-poin inti
fungsi SQLite C API.
Ada 3 antarmuka utama:
SQLiteDriver
- Ini adalah titik entri untuk menggunakan SQLite dan bertanggung jawab untuk membuka koneksi database.SQLiteConnection
- Merupakan representasi objeksqlite3
.SQLiteStatement
- Merupakan representasi 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:
- Membuka koneksi database menggunakan
SQLiteDriver
yang dibuat instance terlepas dari implementasi layanan. - Siapkan pernyataan SQL menggunakan
SQLiteConnection.prepare()
- Jalankan
SQLiteStatement
dengan:- Secara opsional, binding argumen menggunakan fungsi
bind*()
. - Melakukan iterasi pada set hasil menggunakan fungsi
step()
. - Membaca kolom dari kumpulan hasil menggunakan fungsi
get*()
.
- Secara opsional, binding argumen menggunakan fungsi
Implementasi {i>Driver<i}
Tabel berikut meringkas 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
. Ini mencakup library SQLite yang dikompilasi dari
Google Cloud, menawarkan versi terbaru dan konsistensi di semua
dan digunakan di platform KMP yang didukung.
Driver dan Room SQLite
API driver berguna untuk interaksi tingkat rendah dengan database SQLite. Untuk library kaya fitur yang menyediakan akses SQLite Sebaiknya gunakan ruang.
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 ke akun terkelola
koneksi database.