SQLite (Kotlin Multiplatform)

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-Treiberschnittstellen
  • androidx.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 das sqlite3-Objekt dar.
  • SQLiteStatement: stellt das sqlite3_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.

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.