SQLite (Kotlin मल्टीप्लैटफ़ॉर्म)

androidx.sqlite लाइब्रेरी में बेसिक के साथ-साथ ऐब्स्ट्रैक्ट इंटरफ़ेस भी हैं इस टूल का इस्तेमाल करके, अपनी लाइब्रेरी बनाई जा सकती हैं. SQLite. आप Room की लाइब्रेरी का इस्तेमाल कर सकते हैं. यहां आपको SQLite पर एक ऐब्स्ट्रक्शन लेयर, जो डेटाबेस को बेहतर तरीके से ऐक्सेस करती है. SQLite की सभी सुविधाओं का इस्तेमाल किया जा रहा है.

डिपेंडेंसी सेट अप करना

androidx.sqlite का मौजूदा वर्शन, जो Kotlin मल्टी-प्लैटफ़ॉर्म के साथ काम करता है (KMP) 2.5.0-alpha01 या उससे बाद का है.

अपने KMP प्रोजेक्ट में SQLite सेटअप करने के लिए, आर्टफ़ैक्ट के लिए डिपेंडेंसी जोड़ें build.gradle.kts फ़ाइल में अपने मॉड्यूल के लिए:

  • androidx.sqlite:sqlite - SQLite ड्राइवर इंटरफ़ेस
  • androidx.sqlite:sqlite-bundled - बंडल किए गए ड्राइवर को लागू करना

SQLite ड्राइवर एपीआई

androidx.sqlite लाइब्रेरी ग्रुप, कम लेवल के एपीआई ऑफ़र करते हैं. इनका इस्तेमाल करके, इनके साथ कम्यूनिकेट किया जा सकता है SQLite लाइब्रेरी का इस्तेमाल करते समय, androidx.sqlite:sqlite-bundled या होस्ट प्लैटफ़ॉर्म, जैसे कि Android या iOS में androidx.sqlite:sqlite-framework का इस्तेमाल करते समय. ये एपीआई, Google Cloud की SQLite C API की सुविधाओं का इस्तेमाल करें.

इसके तीन मुख्य इंटरफ़ेस होते हैं:

  • 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 API की तरह ही, आम तौर पर इन एपीआई का इस्तेमाल किया जाता है:

  • इंस्टैंशिएट किए गए SQLiteDriver का इस्तेमाल करके डेटाबेस कनेक्शन खोलें लागू करना.
  • SQLiteConnection.prepare() का इस्तेमाल करके SQL स्टेटमेंट तैयार करें
  • 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 लाइब्रेरी शामिल है, जिसे स्रोत है, जो सबसे अप-टू-डेट वर्शन ऑफ़र करता है और सभी केMP प्लैटफ़ॉर्म का इस्तेमाल कर सकते हैं.

SQLite ड्राइवर और रूम

ड्राइवर एपीआई, SQLite डेटाबेस के साथ कम लेवल के इंटरैक्शन के लिए काम के होते हैं. एक ऐसी सुविधा वाली लाइब्रेरी के लिए जो SQLite का ज़्यादा बेहतर ऐक्सेस देती है कमरा बुक करने का सुझाव दिया जाता है.

RoomDatabase, डेटाबेस से जुड़ी कार्रवाइयां करने के लिए SQLiteDriver का इस्तेमाल करता है और को लागू करने के तरीके को कॉन्फ़िगर करना ज़रूरी है. RoomDatabase.Builder.setDriver(). कमरे की सुविधाएं RoomDatabase.useReaderConnection और RoomDatabase.useWriterConnection: मैनेज की जा रही सेवा के ज़्यादा सीधे ऐक्सेस के लिए डेटाबेस कनेक्शन.