如何从资产中的数据库中读取数据而不进行复制

时间:2015-10-15 14:30:56

标签: android database sqliteopenhelper

在数据库文件中(在资产中)我需要读取一些日期而不在设备上复制此数据库。  我没有在谷歌找到正确的工作答案。

有可能吗?

3 个答案:

答案 0 :(得分:3)

SQLite需要一个本地文件,而不仅仅是InputStream才能工作。

或者:

  • Use SQLiteAssetHelper并将数据复制到本地文件或

  • 不要使用SQLite作为存储格式,而是使用其他具有InputStream友好解析器的东西(例如,JSON,使用Gson)

答案 1 :(得分:1)

不,你不能这样做,因为所有资产都是以二进制形式编译的,android保存了所有资产文件的名称,它可以在运行时访问该文件...! Project Resources,请参阅链接上的main/assets

Android SQLiteDatabaseHelper需要某种InputStream ......!

备选方案:

  • 您可以将资源目录中的数据库复制到android app目录。有关参考,请参阅this链接...!

  • 您可以将数据库从资产复制到SD卡,然后访问它....请参阅this链接..!

  • 您可以使用SQLITE的JSON,XML或GSON格式(不推荐)

答案 2 :(得分:0)

我正在考虑使用输入流,因为我们可以将它指向资产,但事实证明db调用的最低级别是本机接受os文件。因此,复制到本地应该是唯一的选择,即使它是只读的

nativeOpen