آموزش باز کردن فایل دیتابیس آماده از پوشه Assets در اندروید با Kotlin

آموزش باز کردن فایل دیتابیس آماده از پوشه Assets در اندروید با Kotlin

یکی از مشکلاتی که خودم باهاش مواجه هستم اینه که بخوام یه فایل دیتابیس آماده رو تو برنامه استفاده کنم. منظور من از فایل دیتابیس آماده یه دیتابیس کامل شامل جداول و دیتا است. حالا با آموزش باز کردن فایل دیتابیس آماده از پوشه Assets در اندروید با Kotlin قراره یه کد ساده داشته باشید که این مشکل رو برطرف می کنه!

class Database(private val context: Context) {

    companion object {
        const val DATABASE_NAME = "master_db.sqlite"
    }


    fun openDatabase(): SQLiteDatabase {
        val dbFile = context.getDatabasePath(DATABASE_NAME)

        if (!dbFile.exists()) {
            try {
                val checkDatabase = context
                    .openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null)

                checkDatabase?.close()
                copyDatabase()
            } catch (e: IOException) {
                throw RuntimeException("Error creating source database", e)
            }
        }

        return SQLiteDatabase
            .openDatabase(
                dbFile.path,
                null,
                SQLiteDatabase.OPEN_READWRITE
            )
    }

    private fun copyDatabase() {
        context.assets
            .open(DATABASE_NAME)
            .copyTo(
                out = FileOutputStream(context.getDatabasePath(DATABASE_NAME)),
                bufferSize = 8 * 1024
            )
    }
}

حالا کافیه فایل دیتابیس رو داخل پوشه Assets کپی کنید و اسم اون رو توی خط مشخص شده جایگزین کنید! اگر مشکلی داشتید تو قسمت نظرات مطرح کنید. راستی تا یادم نرفته هم بگم استفاده ازش خیلی آسونه با کد پایین دیتابیس باز میشه و می تونید ازش اطلاعات بخونید یا توش چیزی بنویسید.

val db = Database(context).openDatabase()

البته می دونم با مفاهیمی مثل Room دیگه استفاده از این روش اصلا منطقی نیست ولی من هنوزم دوستش دارم و ازش استفاده می کنم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

چهار × 1 =