gpt4 book ai didi

Android房间数据库不会导出所有数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:53 25 4
gpt4 key购买 nike

我正在尝试设置 Room 数据库备份功能。问题是 sql 数据库文件在下载后不包含应用程序中的最新数据集。它总是会遗漏一些最近的记录。有导出房间数据库的正确方法吗?附言我在使用 sqliteHelper 处理我的数据库时没有遇到类似的问题,所以我想它一定与 Room 有关。

我的做法:

@Throws(IOException::class)
private fun copyAppDbToDownloadFolder(address: String) {
val backupDB = File(address, "studioDb.db")
val currentDB = applicationContext.getDatabasePath(StudioDatabase.DB_NAME)
if (currentDB.exists()) {
val src = FileInputStream(currentDB).channel
val dst = FileOutputStream(backupDB).channel
dst.transferFrom(src, 0, src.size())
src.close()
dst.close()
}
}

最佳答案

你需要使用

JournalMode.TRUNCATE

在你的 AppDatabase.java 中:

private static AppDatabase sInstance;

public static AppDatabase getDatabase(final Context context) {
if (sInstance == null) {
synchronized (AppDatabase.class) {
if (sInstance == null) {
sInstance = Room.databaseBuilder(context, AppDatabase.class, DATABASE_NAME)
.setJournalMode(JournalMode.TRUNCATE)
.build();
}
}
}
return sInstance;
}

此方法不会创建阻碍导出房间数据库的 db.baddb.wal 文件。

导出数据库文件:

Link: Exporting db with creating folder on daily basis

关于Android房间数据库不会导出所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49394683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com