یکی از مشکلاتی که خودم باهاش مواجه هستم اینه که بخوام یه فایل دیتابیس آماده رو تو برنامه استفاده کنم. منظور من از فایل دیتابیس آماده یه دیتابیس کامل شامل جداول و دیتا است. حالا با آموزش باز کردن فایل دیتابیس آماده از پوشه 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 دیگه استفاده از این روش اصلا منطقی نیست ولی من هنوزم دوستش دارم و ازش استفاده می کنم.