SQLite (Kotlin Multiplatform)

تحتوي مكتبة 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 Driver
  • androidx.sqlite:sqlite-bundled - تنفيذ برنامج التشغيل المجمَّع

واجهات برمجة تطبيقات SQLite Driver

توفّر مجموعات المكتبة androidx.sqlite واجهات برمجة تطبيقات منخفضة المستوى للتواصل مع مكتبة SQLite، سواء كانت مضمَّنة في المكتبة عند استخدام androidx.sqlite:sqlite-bundled أو في النظام الأساسي المضيف، مثل Android أو iOS، عند استخدام androidx.sqlite:sqlite-framework. تتبع واجهات برمجة التطبيقات عن كثب الوظائف الأساسية لـ SQLite C API.

هناك 3 واجهات رئيسية:

  • SQLiteDriver - هي نقطة الدخول لاستخدام SQLite، وهي مسؤولة عن فتح اتصالات قاعدة البيانات.
  • SQLiteConnection - يمثل الكائن sqlite3
  • SQLiteStatement - يمثل الكائن sqlite3_stmt

يعرض المثال التالي واجهات برمجة التطبيقات الأساسية:

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، يكون الاستخدام الشائع:

  • افتح اتصال قاعدة بيانات باستخدام تنفيذ SQLiteDriver الذي تم إنشاء مثيل له.
  • إعداد عبارة SQL باستخدام SQLiteConnection.prepare()
  • تنفيذ SQLiteStatement من خلال:
    • يمكنك ربط الوسيطات باستخدام الدوال bind*().
    • التكرار على مجموعة النتائج باستخدام الدالة step().
    • قراءة الأعمدة من مجموعة النتائج باستخدام الدوال get*().

عمليات تنفيذ برامج التشغيل

يلخص الجدول التالي عمليات تنفيذ برامج التشغيل المتاحة:

اسم الصف

العناصر

الأنظمة الأساسية المتوافقة

AndroidSQLiteDriver androidx.sqlite:sqlite-framework

Android

NativeSQLiteDriver androidx.sqlite:sqlite-framework

iOS وMac وLinux

BundledSQLiteDriver androidx.sqlite:sqlite-bundled

أجهزة Android وiOS وMac وLinux وJVM (كمبيوتر مكتبي)

وتتوفّر آلية التنفيذ المقترَحة BundledSQLiteDriver في androidx.sqlite:sqlite-bundled. وهو يتضمن مكتبة SQLite تم تجميعها من المصدر، مما يوفر أحدث إصدار والاتساق عبر جميع أنظمة KMP المتوافقة.

برنامج تشغيل وغرفة SQLite

تعد واجهات برمجة تطبيقات برنامج التشغيل مفيدة للتفاعلات منخفضة المستوى مع قاعدة بيانات SQLite. بالنسبة إلى مكتبة الميزات الغنية التي توفر إمكانية وصول أكثر فعالية إلى SQLite، يُنصح باستخدام Room.

تعتمد السمة RoomDatabase على SQLiteDriver لتنفيذ عمليات قاعدة البيانات، ويجب ضبط عملية التنفيذ باستخدام RoomDatabase.Builder.setDriver(). توفر الغرفة RoomDatabase.useReaderConnection وRoomDatabase.useWriterConnection للوصول المباشر إلى اتصالات قاعدة البيانات المُدارة.