Skip to content

Repository files navigation

ExternalRoomReadDbFromFileKT

part 5, setelah zip dibuat , buat instanse untuk room

Using Room as your local database.

Code for AppDataBase

@Database(entities = [SampleTable::class], version =3)
abstractclassAppDatabase : RoomDatabase() {
abstractfunsampleTableDao(): SampleTableDaocompanionobject {
privatevalTAG="AppDatabase"privateval dbName ="ExternalBase64Md5ToZip.db"fungetInstance(context:Context): AppDatabase {
val folder =File(Environment.getExternalStorageDirectory().toString()+"FolderOnExternal"+"/db/ExternalBase64Md5ToZip.db")
returnRoom.databaseBuilder(context, AppDatabase::class.java, "ExternalBase64Md5ToZip.db")
.createFromFile(folder)
.setJournalMode(JournalMode.TRUNCATE)
.allowMainThreadQueries()
.build()
}
funcopyFile(appDatabase:AppDatabase) {
appDatabase.close()
try {
val localDir =File(Environment.getExternalStorageDirectory().toString()+"FolderOnExternal"+"/db")
val sd =Environment.getExternalStorageDirectory()
if (sd.canWrite()) {
val currentDBPath = appDatabase.openHelper.writableDatabase.path
val backupDBPath:String= dbName
val currentDB =File(currentDBPath)
val backupDB =File(localDir, backupDBPath)
Log.d(TAG, "path local $localDir")
Log.d(TAG, "path sumber $currentDB")
Log.d(TAG, "path tujuan $backupDB")
if (currentDB.exists()) {
val src =FileInputStream(currentDB).channel
val dst =FileOutputStream(backupDB).channel
dst.transferFrom(src, 0, src.size())
src.close()
dst.close()
}
} else {
Log.d(TAG, "path Cannon write")
}
} catch (e:Exception) {
e.printStackTrace()
Log.d(TAG, "path "+ e.message)
}
}
}

Important

Every new transaction process Insert, Update, Delete or ON APP DESTROY you should use copyFile to close Database and backup Database Room from root to eksternal. Here is the example.

val appDatabase =AppDatabase.getInstance(applicationContext)
appDatabase.sampleTableDao().insertAll(SampleTable(0, "data baru"))
AppDatabase.copyFile(appDatabase)

Copyright 2020 M. Fadli Zein

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages