房间图书馆可以从资产文件夹复制数据库吗?
Room library can copy db from asset folder?
我在 Assets 文件夹中有一个带有预加载数据库的旧项目。该项目有 SQLiteOpenHelper implemented for database operations. But now to update app I want to move my project to Room 个数据库库。
所以我的问题是,Room 库中是否有任何可用的方法或功能,我可以在运行时在应用程序中使用预加载的 db 文件。
或者有什么方法可以先加载数据库,然后从 Room 库直接对该数据库执行查询?
Is there any method or feature available in Room library with I can use preloaded db file in app at runtime.
从 Room 2.2.0 开始,RoomDatabase.Builder
支持 createFromAsset()
和 createFromFile()
来设置具有 pre-loaded 初始内容的数据库。有关更多信息,请参阅 the documentation。
为了未来可能像我一样登陆这里寻找答案的人 - Room 最终添加了从 2.2.0-alpha01
加载资产的能力
把数据库放在assets文件夹里(也可以放在assets的子文件夹里),这样访问:
val db = Room.databaseBuilder(applicationContext, MyDatabase::class.java, "database.db")
.createFromAsset("/databases/database.db")
.build()
如果数据库不在子目录中,您只需输入名称即可。
我在 Assets 文件夹中有一个带有预加载数据库的旧项目。该项目有 SQLiteOpenHelper implemented for database operations. But now to update app I want to move my project to Room 个数据库库。
所以我的问题是,Room 库中是否有任何可用的方法或功能,我可以在运行时在应用程序中使用预加载的 db 文件。
或者有什么方法可以先加载数据库,然后从 Room 库直接对该数据库执行查询?
Is there any method or feature available in Room library with I can use preloaded db file in app at runtime.
从 Room 2.2.0 开始,RoomDatabase.Builder
支持 createFromAsset()
和 createFromFile()
来设置具有 pre-loaded 初始内容的数据库。有关更多信息,请参阅 the documentation。
为了未来可能像我一样登陆这里寻找答案的人 - Room 最终添加了从 2.2.0-alpha01
加载资产的能力把数据库放在assets文件夹里(也可以放在assets的子文件夹里),这样访问:
val db = Room.databaseBuilder(applicationContext, MyDatabase::class.java, "database.db")
.createFromAsset("/databases/database.db")
.build()
如果数据库不在子目录中,您只需输入名称即可。