SQLite (Kotlin Çoklu Platform)

androidx.sqlite kitaplığında soyut arayüzlerin yanı sıra SQLite'a erişen kendi kitaplıklarınızı oluşturmak için kullanılabilecek temel uygulamalar bulunur. SQLite'ın üzerinde bir soyutlama katmanı sağlayan Room kitaplığını kullanabilirsiniz. Bu kitaplık, SQLite'ın tüm gücünden yararlanırken daha sağlam veritabanı erişimi sağlamak için SQLite üzerinde soyutlama katmanı sağlar.

Bağımlılıkları ayarlama

Kotlin Çoklu Platform'u (KMP) destekleyen mevcut androidx.sqlite sürümü, 2.5.0-alpha01 veya üzeridir.

KMP projenizde SQLite kurmak için modülünüzün build.gradle.kts dosyasına yapıların bağımlılıklarını ekleyin:

  • androidx.sqlite:sqlite - SQLite Sürücüsü arayüzleri
  • androidx.sqlite:sqlite-bundled: Paket halinde sunulan sürücü uygulaması

SQLite Sürücü API'leri

androidx.sqlite kitaplık grupları, androidx.sqlite:sqlite-bundled kullanılırken kitaplıkta veya androidx.sqlite:sqlite-framework kullanırken Android ya da iOS gibi ana makine platformunda SQLite kitaplığıyla iletişim kurmak için alt düzey API'ler sunar. API'ler SQLite C API'nin temel işlevini yakından takip eder.

3 ana arayüz vardır:

  • SQLiteDriver: SQLite'ın kullanılacağı giriş noktasıdır ve veritabanı bağlantılarını açmaktan sorumludur.
  • SQLiteConnection: sqlite3 nesnesinin temsilidir.
  • SQLiteStatement: sqlite3_stmt nesnesinin temsilidir.

Aşağıdaki örnekte temel API'ler gösterilmiştir:

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()
}

SQLite C API'lerine benzer şekilde yaygın kullanım şu şekildedir:

  • Örneklenen SQLiteDriver uygulamasını kullanarak bir veritabanı bağlantısı açın.
  • SQLiteConnection.prepare() kullanarak SQL deyimi hazırlama
  • SQLiteStatement yürütme işlemini şu şekilde yürütün:
    • İsterseniz bind*() işlevlerini kullanarak bağımsız değişkenleri bağlayabilirsiniz.
    • step() işlevi kullanılarak sonuç kümesi üzerinde yineleme.
    • get*() işlevlerini kullanarak sonuç kümesindeki sütunlar okunuyor.

Sürücü Uygulamaları

Aşağıdaki tabloda kullanılabilir sürücü uygulamaları özetlenmiştir:

Sınıf Adı

Yapı

Desteklenen Platformlar

AndroidSQLiteDriver androidx.sqlite:sqlite-framework

Android

NativeSQLiteDriver androidx.sqlite:sqlite-framework

iOS, Mac ve Linux

BundledSQLiteDriver androidx.sqlite:sqlite-bundled

Android, iOS, Mac, Linux ve JVM (Masaüstü)

androidx.sqlite:sqlite-bundled için önerilen uygulama BundledSQLiteDriver şeklindedir. Kaynaktan derlenen SQLite kitaplığını içeren bu paket, desteklenen tüm KMP platformlarında en güncel sürümü ve tutarlılığı sunar.

SQLite Sürücüsü ve Odası

Sürücü API'leri, SQLite veritabanıyla alt düzey etkileşimler için kullanışlıdır. SQLite'a daha güçlü bir erişim sağlayan zengin özelliklere sahip bir kitaplık için Room'un kullanılması önerilir.

RoomDatabase, veritabanı işlemlerini gerçekleştirmek için SQLiteDriver gerektirir ve RoomDatabase.Builder.setDriver() ile bir uygulama yapılandırılmalıdır. Oda, yönetilen veritabanı bağlantılarına daha fazla doğrudan erişim için RoomDatabase.useReaderConnection ve RoomDatabase.useWriterConnection olanağı sağlar.