爽玩一百天 2019-06-13 15:44 采纳率: 0%
浏览 1375
已结题

android Room数据库框架 怎么自定义 sqlite db文件路径

由于项目需要,需要保证删除app时保留数据库信息。
需要设置本地数据库文件到data外部。(保存db文件到sd卡 或者 本机)

当前项目本地数据库使用room。代码实现默认没有设置数据库文件的存储位置。

private fun buildDatabase(appContext: Context, executors: AppExecutors): AppDatabase {
return Room.databaseBuilder(appContext, AppDatabase::class.java, DATABASE_NAME).addCallback(object : RoomDatabase.Callback() {})
                        .allowMainThreadQueries()
                        //允许在主线程查询数据
            .addMigrations()
                        //迁移数据库使用,下面会单独拿出来讲
            .build()
}

百度了很多资料,
一般搜索出来的是
/data/data/目录中

public class DBHelper {
//得到SD卡路径
private final String DATABASE_PATH = android.os.Environment
.getExternalStorageDirectory().getAbsolutePath()
+ "/joke";
private final Activity activity;
//数据库名
private final String DATABASE_FILENAME;
public DBHelper(Context context) {
// TODO Auto-generated constructor stub
//这里直接给数据库名
DATABASE_FILENAME = "jokebook.db3";
activity = (Activity)context;
}

看这个搜索结果人都有些无奈了。

最多就是有人提到openHelperFactory这个方法

但是这个方法的具体实现感觉很复杂,不知道怎么实现。

项目中本地数据库记入的数据,需要数据回流服务器用来对账用的。所以要保证本地数据库数据不能被清除。

我知道greendao和纯sqlite是可以设置db文件到外部的(android本机 或者 sd卡中)

但是room这个框架怎么设置就抓瞎了。

  • 写回答

1条回答

  • dabocaiqq 2019-06-13 19:12
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)