SQLite (کوتلین چند پلتفرم)

کتابخانه androidx.sqlite شامل رابط های انتزاعی به همراه پیاده سازی های اساسی است که می تواند برای ساخت کتابخانه های خود که به SQLite دسترسی دارند استفاده شود. ممکن است بخواهید از کتابخانه Room استفاده کنید، که یک لایه انتزاعی را بر روی SQLite فراهم می کند تا امکان دسترسی قوی تر به پایگاه داده و در عین حال استفاده از قدرت کامل SQLite را فراهم کند.

راه اندازی وابستگی ها

نسخه فعلی androidx.sqlite که از Kotlin Multi-Platform (KMP) پشتیبانی می کند 2.5.0-alpha01 یا بالاتر است.

برای راه اندازی SQLite در پروژه KMP خود، وابستگی های مصنوعات را در فایل build.gradle.kts برای ماژول خود اضافه کنید:

  • androidx.sqlite:sqlite - رابط های درایور SQLite
  • androidx.sqlite:sqlite-bundled - اجرای درایور همراه

API های درایور SQLite

گروه‌های کتابخانه androidx.sqlite APIهای سطح پایینی را برای برقراری ارتباط با کتابخانه SQLite ارائه می‌دهند که در هنگام استفاده از androidx.sqlite:sqlite-bundled یا در پلتفرم میزبان، مانند Android یا iOS هنگام استفاده از androidx.sqlite:sqlite-framework در کتابخانه گنجانده شده است. androidx.sqlite:sqlite-framework . APIها دقیقاً از عملکرد اصلی SQLite C API پیروی می کنند.

3 رابط اصلی وجود دارد:

  • SQLiteDriver - نقطه ورود برای استفاده از SQLite است و مسئول باز کردن اتصالات پایگاه داده است.
  • SQLiteConnection - نمایش شی sqlite3 است.
  • SQLiteStatement - نمایشی از شی sqlite3_stmt است.

مثال زیر API های اصلی را نشان می دهد:

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

مشابه API های SQLite C، استفاده رایج این است:

  • یک اتصال پایگاه داده را با استفاده از پیاده سازی SQLiteDriver نمونه باز کنید.
  • یک دستور SQL را با استفاده از SQLiteConnection.prepare() آماده کنید.
  • اجرای یک SQLiteStatement توسط:
    • آرگومان های الزام آور اختیاری با استفاده از توابع bind*() .
    • تکرار روی مجموعه نتیجه با استفاده از تابع step() .
    • خواندن ستون‌ها از مجموعه نتایج با استفاده از توابع get*() .

پیاده سازی درایور

جدول زیر پیاده سازی درایورهای موجود را خلاصه می کند:

نام کلاس

مصنوع

پلتفرم های پشتیبانی شده

AndroidSQLiteDriver androidx.sqlite:sqlite-framework

اندروید

NativeSQLiteDriver androidx.sqlite:sqlite-framework

iOS، Mac و Linux

BundledSQLiteDriver androidx.sqlite:sqlite-bundled

Android، iOS، Mac، Linux و JVM (Desktop)

پیاده سازی توصیه شده برای استفاده BundledSQLiteDriver است که در androidx.sqlite:sqlite-bundled موجود است. این شامل کتابخانه SQLite است که از منبع کامپایل شده است و به روزترین نسخه و سازگاری را در تمام پلتفرم های KMP پشتیبانی شده ارائه می دهد.

درایور و اتاق SQLite

APIهای درایور برای تعاملات سطح پایین با پایگاه داده SQLite مفید هستند. برای یک کتابخانه غنی از ویژگی که دسترسی قوی تری به SQLite فراهم می کند، اتاق توصیه می شود.

یک RoomDatabase برای انجام عملیات پایگاه داده به SQLiteDriver متکی است و یک پیاده سازی لازم است با استفاده از RoomDatabase.Builder.setDriver() پیکربندی شود. Room برای دسترسی مستقیم بیشتر به اتصالات پایگاه داده مدیریت شده، RoomDatabase.useReaderConnection و RoomDatabase.useWriterConnection را فراهم می کند.