SQLite (platforma Kotlin wieloplatformowa)

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 SQLite
  • androidx.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 obiektu sqlite3.
  • SQLiteStatement – reprezentacja obiektu sqlite3_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*().
.

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.