Die androidx.sqlite
-Bibliothek enthält abstrakte Schnittstellen sowie einfache
Implementierungen, mit denen Sie Ihre eigenen Bibliotheken erstellen können,
SQLite. Die Bibliothek Chatroom bietet viele nützliche Funktionen.
eine Abstraktionsschicht über SQLite, die einen stabileren Datenbankzugriff ermöglicht, während
das volle Potenzial von SQLite ausschöpfen.
Abhängigkeiten einrichten
Die aktuelle Version von androidx.sqlite
, die Kotlin Multi-Platform unterstützt
(KMP) ist 2.5.0-alpha01 oder höher.
Fügen Sie die Abhängigkeiten für die Artefakte hinzu, um SQLite in Ihrem KMP-Projekt einzurichten
in der Datei build.gradle.kts
für Ihr Modul:
androidx.sqlite:sqlite
– die SQLite-Treiberschnittstellenandroidx.sqlite:sqlite-bundled
: die gebündelte Treiberimplementierung
SQLite-Treiber-APIs
Die androidx.sqlite
-Bibliotheksgruppen bieten Low-Level-APIs für die Kommunikation mit
SQLite-Bibliothek, die entweder in der Bibliothek enthalten ist,
androidx.sqlite:sqlite-bundled
oder in der Hostplattform, z. B. Android oder iOS
wenn Sie androidx.sqlite:sqlite-framework
verwenden. Die APIs folgen genau den zentralen
Funktionalität der SQLite C API.
Es gibt drei Hauptoberflächen:
SQLiteDriver
: ist der Einstiegspunkt für die Nutzung von SQLite und ist für zum Öffnen von Datenbankverbindungen.SQLiteConnection
: stellt dassqlite3
-Objekt dar.SQLiteStatement
: stellt dassqlite3_stmt
-Objekt dar.
Das folgende Beispiel zeigt die Kern-APIs:
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()
}
Ähnlich wie SQLite C APIs werden häufig folgende Aufgaben verwendet:
- Datenbankverbindung mit dem instanziierten
SQLiteDriver
öffnen Implementierung. - SQL-Anweisung mit
SQLiteConnection.prepare()
vorbereiten - Führen Sie einen
SQLiteStatement
so aus: <ph type="x-smartling-placeholder">- </ph>
- Optionale Bindung von Argumenten mithilfe der
bind*()
-Funktionen. - Iteration des Ergebnissatzes mit der Funktion
step()
. - Spalten aus dem Ergebnissatz mit den
get*()
-Funktionen lesen.
- Optionale Bindung von Argumenten mithilfe der
Treiberimplementierungen
In der folgenden Tabelle sind die verfügbaren Treiberimplementierungen zusammengefasst:
Kursname |
Artefakt |
Unterstützte Plattformen |
AndroidSQLiteDriver |
androidx.sqlite:sqlite-framework |
Android |
NativeSQLiteDriver |
androidx.sqlite:sqlite-framework |
iOS, Mac und Linux |
BundledSQLiteDriver |
androidx.sqlite:sqlite-bundled |
Android, iOS, Mac, Linux und JVM (Desktop) |
Die empfohlene Implementierung ist BundledSQLiteDriver
. Diese ist verfügbar in
androidx.sqlite:sqlite-bundled
. Sie enthält die SQLite-Bibliothek, die aus
und bietet die aktuellste Version und Konsistenz
unterstützten KMP-Plattformen.
SQLite-Treiber und -Raum
Die Treiber-APIs sind nützlich für Low-Level-Interaktionen mit einer SQLite-Datenbank. Für eine umfangreiche Bibliothek, die einen robusteren Zugriff auf SQLite bietet, Es wird ein Zimmer empfohlen.
Ein RoomDatabase
stützt sich auf eine SQLiteDriver
, um Datenbankvorgänge und
muss eine Implementierung mit
RoomDatabase.Builder.setDriver()
Zimmer bieten
RoomDatabase.useReaderConnection
und
RoomDatabase.useWriterConnection
für direkten Zugriff auf das verwaltete
Datenbankverbindungen.