SQLite (Kotlin หลายแพลตฟอร์ม)

ไลบรารี androidx.sqlite ประกอบด้วยอินเทอร์เฟซแบบนามธรรมรวมถึง ที่คุณสามารถนำไปใช้สร้างไลบรารีของคุณเองที่เข้าถึง SQLite คุณอาจต้องการลองใช้ไลบรารีห้อง ซึ่ง ชั้นแอบสแตรกชันบน SQLite เพื่อช่วยให้เข้าถึงฐานข้อมูลได้อย่างมีประสิทธิภาพยิ่งขึ้น ที่ใช้ประโยชน์จาก SQLite อย่างเต็มที่

การตั้งค่าทรัพยากร Dependency

androidx.sqlite เวอร์ชันปัจจุบันที่รองรับ Kotlin Multi-Platform (KMP) 2.5.0-alpha01 ขึ้นไป

หากต้องการตั้งค่า SQLite ในโปรเจ็กต์ KMP ให้เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ ในไฟล์ build.gradle.kts สำหรับโมดูล

  • androidx.sqlite:sqlite - อินเทอร์เฟซไดรเวอร์ SQLite
  • androidx.sqlite:sqlite-bundled - การใช้งานไดรเวอร์แพ็กเกจ

SQLite Driver API

กลุ่มไลบรารี androidx.sqlite มี API ระดับต่ำสำหรับการสื่อสารด้วย ไลบรารี SQLite ที่รวมอยู่ในไลบรารีเมื่อใช้ androidx.sqlite:sqlite-bundled หรือในแพลตฟอร์มโฮสต์ เช่น Android หรือ iOS เมื่อใช้ 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()
}

การใช้งานทั่วไปคล้ายกับ SQLite C API ดังนี้

  • เปิดการเชื่อมต่อฐานข้อมูลโดยใช้ 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

API ไดรเวอร์มีประโยชน์สำหรับการโต้ตอบระดับต่ำกับฐานข้อมูล SQLite สำหรับไลบรารีที่มีฟีเจอร์ซึ่งให้การเข้าถึง SQLite ที่มีประสิทธิภาพมากขึ้น ขอแนะนำให้ใช้ห้องแชท

RoomDatabase ใช้ SQLiteDriver ในการดำเนินการฐานข้อมูลและ การติดตั้งใช้งานจำเป็นต้องมีการกำหนดค่าโดยใช้ RoomDatabase.Builder.setDriver() ห้องพักมี RoomDatabase.useReaderConnection และ RoomDatabase.useWriterConnection สำหรับการเข้าถึงโดยตรงมากขึ้นไปยังบัญชีที่จัดการ การเชื่อมต่อฐานข้อมูล