房间库可以从资产文件夹复制数据库吗?

时间:2018-03-17 16:02:31

标签: android android-sqlite android-room

我在Assets文件夹中有预装数据库的旧项目。该项目已为数据库操作实施SQLiteOpenHelper。但现在更新应用程序我想将我的项目移动到Room数据库库。

所以我的问题是,Room库中是否有任何方法或功能,我可以在运行时在app中使用预加载的db文件。

或者我是否可以先加载db然后从Room库中直接执行查询?

2 个答案:

答案 0 :(得分:4)

  

Room库中是否有可用的方法或功能,我可以在运行时在app中使用预加载的db文件。

在Android上只有SQLite。就像你必须在那里使用一些代码将资产复制到本地文件系统一样,你必须为Room做同样的事情。

This library似乎基于SQLiteOpenHelper,并且应该提供将数据库打包为资产所需的钩子,然后将其与Room一起使用。我个人没试过。

此外,this sample app演示了如何将SQLiteOpenHelper包装在必要的类中以便与Room一起使用。这不是特别简单。

答案 1 :(得分:0)

对于将来可能像我一样登陆这里的人们以寻找答案-Room最终增加了从2.2.0-alpha01起从资产加载的功能

只需将数据库放入资产文件夹(它也可以位于资产的子文件夹中)并按以下方式访问它:

val db = Room.databaseBuilder(applicationContext, MyDatabase::class.java, "database.db")
        .createFromAsset("/databases/database.db")
        .build()

如果数据库不在子目录中,则只需输入名称而无需任何其他路径。