Biblioteka androidx.sqlite
zawiera abstrakcyjne interfejsy oraz podstawowe
możesz użyć do tworzenia własnych bibliotek wykorzystujących dostęp
SQLite. Możesz skorzystać z biblioteki Sal, w której znajdziesz
warstwa abstrakcji na SQLite,
zapewniając solidniejszy dostęp do bazy danych
dzięki wykorzystaniu wszystkich możliwości SQLite.
Konfigurowanie zależności
Aktualna wersja androidx.sqlite
, która obsługuje funkcje wieloplatformowe Kotlin
(KMP) jest w wersji 2.5.0-alfa01 lub nowszej.
Aby skonfigurować SQLite w projekcie KMP, dodaj zależności artefaktów
w pliku build.gradle.kts
Twojego modułu:
androidx.sqlite:sqlite
– interfejsy sterownika SQLiteandroidx.sqlite:sqlite-bundled
– pakietowa implementacja sterownika.
Interfejsy API sterowników SQLite
Grupy bibliotek androidx.sqlite
oferują niskopoziomowe interfejsy API do komunikacji
z biblioteki SQLite zawartej w bibliotece
androidx.sqlite:sqlite-bundled
lub na platformie hosta, np. Android lub iOS
podczas korzystania z androidx.sqlite:sqlite-framework
. Interfejsy API ściśle związane z podstawowymi
funkcji SQLite C API.
Dostępne są 3 główne interfejsy:
SQLiteDriver
– jest to punkt wejścia do korzystania z SQLite i odpowiada do otwierania połączeń z bazą danych.SQLiteConnection
– reprezentacja obiektusqlite3
.SQLiteStatement
– reprezentacja obiektusqlite3_stmt
.
Podstawowe interfejsy API zostały zaprezentowane na poniższym przykładzie:
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()
}
Podobnie jak w przypadku interfejsów API SQLite C typowym zastosowaniem jest:
- Otwórz połączenie z bazą danych za pomocą utworzonej przez Ciebie instancji
SQLiteDriver
implementacji. - Przygotowywanie instrukcji SQL za pomocą
SQLiteConnection.prepare()
- Wykonaj
SQLiteStatement
przez:- Opcjonalnie wiąż argumenty za pomocą funkcji
bind*()
. - iteracja zbioru wyników za pomocą funkcji
step()
. - Odczytuję kolumny z zestawu wyników za pomocą funkcji
get*()
.
- Opcjonalnie wiąż argumenty za pomocą funkcji
Implementacje sterowników
W tabeli poniżej znajdziesz podsumowanie dostępnych implementacji sterowników:
Nazwa zajęć |
Artefakt |
Obsługiwane platformy |
AndroidSQLiteDriver |
androidx.sqlite:sqlite-framework |
Android |
NativeSQLiteDriver |
androidx.sqlite:sqlite-framework |
iOS, Mac i Linux |
BundledSQLiteDriver |
androidx.sqlite:sqlite-bundled |
Android, iOS, Mac, Linux i JVM (komputery) |
Zalecana implementacja jest dostępna tutaj: BundledSQLiteDriver
androidx.sqlite:sqlite-bundled
Zawiera bibliotekę SQLite skompilowaną z
które zapewniają najbardziej aktualną wersję i spójność
na obsługiwanych platformach KMP.
Sterownik i sala SQLite
Interfejsy API sterowników przydają się do niskopoziomowych interakcji z bazą danych SQLite. W przypadku biblioteki z bogatymi funkcjami, która zapewnia wydajniejszy dostęp do SQLite, niż Zalecamy pokój.
RoomDatabase
używa interfejsu SQLiteDriver
do wykonywania operacji na bazie danych i
wymaga skonfigurowania implementacji za pomocą
RoomDatabase.Builder.setDriver()
. Wyposażenie pokoju
RoomDatabase.useReaderConnection
i
RoomDatabase.useWriterConnection
, aby uzyskać bardziej bezpośredni dostęp do zarządzanych
połączenia z bazą danych.