我在Assets文件夹中有预装数据库的旧项目。该项目已为数据库操作实施SQLiteOpenHelper。但现在更新应用程序我想将我的项目移动到Room数据库库。
所以我的问题是,Room库中是否有任何方法或功能,我可以在运行时在app中使用预加载的db文件。
或者我是否可以先加载db然后从Room库中直接执行查询?
答案 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()
如果数据库不在子目录中,则只需输入名称而无需任何其他路径。