SQLite (Kotlin Multiplatform)

تحتوي مكتبة androidx.sqlite على واجهات مجردة إلى جانب من التطبيقات التي يمكن استخدامها لإنشاء مكتباتك التي يمكنها الوصول إلى SQLite. ويمكنك استخدام مكتبة الغرفة التي توفر طبقة تجريدية عبر 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 - تنفيذ برنامج التشغيل المجمّع

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

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

هناك 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 Driver و Room

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

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