SQLite (কোটলিন মাল্টিপ্ল্যাটফর্ম)

androidx.sqlite লাইব্রেরিতে মৌলিক বাস্তবায়নের সাথে বিমূর্ত ইন্টারফেস রয়েছে যা SQLite অ্যাক্সেস করে আপনার নিজস্ব লাইব্রেরি তৈরি করতে ব্যবহার করা যেতে পারে। আপনি রুম লাইব্রেরি ব্যবহার করার কথা বিবেচনা করতে চাইতে পারেন, যা SQLite-এর পূর্ণ শক্তি ব্যবহার করার সময় আরও শক্তিশালী ডাটাবেস অ্যাক্সেসের জন্য SQLite-এর উপর একটি বিমূর্তকরণ স্তর প্রদান করে।

নির্ভরতা সেট আপ করা হচ্ছে

androidx.sqlite এর বর্তমান সংস্করণ যা Kotlin Multi-Platform (KMP) সমর্থন করে তা হল 2.5.0-alpha01 বা উচ্চতর।

আপনার KMP প্রোজেক্টে SQLite সেটআপ করতে, আপনার মডিউলের জন্য build.gradle.kts ফাইলে আর্টিফ্যাক্টগুলির জন্য নির্ভরতা যোগ করুন:

  • androidx.sqlite:sqlite - SQLite ড্রাইভার ইন্টারফেস
  • androidx.sqlite:sqlite-bundled - বান্ডেলড ড্রাইভার বাস্তবায়ন

SQLite ড্রাইভার APIs

androidx.sqlite লাইব্রেরি গ্রুপগুলি androidx.sqlite:sqlite-bundled বা হোস্ট প্ল্যাটফর্ম, যেমন Android বা iOS ব্যবহার করার সময় androidx.sqlite:sqlite-framework ব্যবহার করার সময় লাইব্রেরিতে অন্তর্ভুক্ত SQLite লাইব্রেরির সাথে যোগাযোগের জন্য নিম্ন-স্তরের API অফার করে। androidx.sqlite:sqlite-framework APIs ঘনিষ্ঠভাবে 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 বাস্তবায়ন ব্যবহার করে একটি ডাটাবেস সংযোগ খুলুন।
  • SQLiteConnection.prepare() ব্যবহার করে একটি SQL স্টেটমেন্ট প্রস্তুত করুন
  • এর দ্বারা একটি SQLiteStatement চালান:
    • bind*() ফাংশন ব্যবহার করে ঐচ্ছিকভাবে বাইন্ডিং আর্গুমেন্ট।
    • step() ফাংশন ব্যবহার করে ফলাফল সেটের উপর পুনরাবৃত্তি করা।
    • get*() ফাংশন ব্যবহার করে ফলাফল সেট থেকে কলাম পড়া।

ড্রাইভার বাস্তবায়ন

নিম্নলিখিত সারণী উপলব্ধ ড্রাইভার বাস্তবায়ন সংক্ষিপ্ত করে:

ক্লাসের নাম

আর্টিফ্যাক্ট

সমর্থিত প্ল্যাটফর্ম

AndroidSQLiteDriver androidx.sqlite:sqlite-framework

অ্যান্ড্রয়েড

NativeSQLiteDriver androidx.sqlite:sqlite-framework

iOS, Mac, এবং Linux

BundledSQLiteDriver androidx.sqlite:sqlite-bundled

অ্যান্ড্রয়েড, আইওএস, ম্যাক, লিনাক্স এবং জেভিএম (ডেস্কটপ)

ব্যবহার করার জন্য প্রস্তাবিত বাস্তবায়ন হল BundledSQLiteDriver androidx.sqlite:sqlite-bundled এ উপলব্ধ। এতে উৎস থেকে সংকলিত SQLite লাইব্রেরি রয়েছে, যা সব সমর্থিত KMP প্ল্যাটফর্ম জুড়ে সবচেয়ে আপ-টু-ডেট সংস্করণ এবং ধারাবাহিকতা প্রদান করে।

SQLite ড্রাইভার এবং রুম

ড্রাইভার APIগুলি একটি SQLite ডাটাবেসের সাথে নিম্ন-স্তরের মিথস্ক্রিয়াগুলির জন্য দরকারী। একটি বৈশিষ্ট্য সমৃদ্ধ লাইব্রেরির জন্য যা SQLite এর আরও শক্তিশালী অ্যাক্সেস প্রদান করে তারপর রুম সুপারিশ করা হয়।

একটি RoomDatabase ডাটাবেস ক্রিয়াকলাপ সম্পাদন করার জন্য একটি SQLiteDriver এর উপর নির্ভর করে এবং RoomDatabase.Builder.setDriver() ব্যবহার করে একটি বাস্তবায়ন কনফিগার করা প্রয়োজন৷ পরিচালিত ডাটাবেস সংযোগগুলিতে আরও সরাসরি অ্যাক্সেসের জন্য রুমটি RoomDatabase.useReaderConnection এবং RoomDatabase.useWriterConnection প্রদান করে।