کتابخانه 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 -
androidx.sqlite:sqlite-bundled
- اجرای درایور همراه
API های درایور SQLite
گروههای کتابخانه androidx.sqlite
APIهای سطح پایینی را برای برقراری ارتباط با کتابخانه SQLite ارائه میدهند که در هنگام استفاده از androidx.sqlite:sqlite-bundled
یا در پلتفرم میزبان، مانند Android یا iOS هنگام استفاده از androidx.sqlite:sqlite-framework
در کتابخانه گنجانده شده است. 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()
}
مشابه API های SQLite C، استفاده رایج این است:
- یک اتصال پایگاه داده را با استفاده از پیاده سازی
SQLiteDriver
نمونه باز کنید. - یک دستور SQL را با استفاده از
SQLiteConnection.prepare()
آماده کنید. - اجرای یک
SQLiteStatement
توسط:- آرگومان های الزام آور اختیاری با استفاده از توابع
bind*()
. - تکرار روی مجموعه نتیجه با استفاده از تابع
step()
. - خواندن ستونها از مجموعه نتایج با استفاده از توابع
get*()
.
- آرگومان های الزام آور اختیاری با استفاده از توابع
پیاده سازی درایور
جدول زیر پیاده سازی درایورهای موجود را خلاصه می کند:
نام کلاس | مصنوع | پلتفرم های پشتیبانی شده |
AndroidSQLiteDriver | androidx.sqlite:sqlite-framework | اندروید |
NativeSQLiteDriver | androidx.sqlite:sqlite-framework | iOS، Mac و Linux |
BundledSQLiteDriver | androidx.sqlite:sqlite-bundled | Android، iOS، Mac، Linux و JVM (Desktop) |
پیاده سازی توصیه شده برای استفاده BundledSQLiteDriver
است که در androidx.sqlite:sqlite-bundled
موجود است. این شامل کتابخانه SQLite است که از منبع کامپایل شده است و به روزترین نسخه و سازگاری را در تمام پلتفرم های KMP پشتیبانی شده ارائه می دهد.
درایور و اتاق SQLite
APIهای درایور برای تعاملات سطح پایین با پایگاه داده SQLite مفید هستند. برای یک کتابخانه غنی از ویژگی که دسترسی قوی تری به SQLite فراهم می کند، اتاق توصیه می شود.
یک RoomDatabase
برای انجام عملیات پایگاه داده به SQLiteDriver
متکی است و یک پیاده سازی لازم است با استفاده از RoomDatabase.Builder.setDriver()
پیکربندی شود. Room برای دسترسی مستقیم بیشتر به اتصالات پایگاه داده مدیریت شده، RoomDatabase.useReaderConnection
و RoomDatabase.useWriterConnection
را فراهم می کند.