【发布时间】:2017-10-31 00:37:32
【问题描述】:
我想将 Room 与预先填充的数据库一起使用,但我不明白如何告诉 Room 在哪里可以找到我的数据库。
我现在把它放在src/main/assets/databases 中,当我为 Room 数据库创建实例时,我是这样创建的:
Room.databaseBuilder(
getApplicationContext(),
AppDatabase.class,
"justintrain.db"
)
.allowMainThreadQueries()
.build();
这样,我认为它每次都在创建一个新数据库,或者无论如何,它没有使用预先填充的数据库。
我怎样才能找到我的数据库?
【问题讨论】:
-
我还没有看到一个好的解决方案。我为此提交了a feature request。
-
@CommonsWare 所以我猜它需要一段时间才能实施。你知道在那之前可以使用的任何解决方法吗? (非常感谢您的报告!)
-
好吧,您可以假设数据库存储在
getDatabasePath()中,用于您选择的数据库文件名。然后,如果该文件尚不存在,请在创建RoomDatabase之前安排将资产复制到该路径中。这是我在该问题中提出的第一个选项,理想情况下,我们可以更加保证“getDatabasePath()for your selected database filename”是正确答案。 -
@AlbertoGiunta 为你工作medium.com/google-developers/… ?
-
CommonsWare 在这里有一个很好的解决方案:github.com/commonsguy/cw-androidarch/tree/v0.6/General/…
标签: android android-sqlite android-room android-room-prepackageddatabase