如何在不复制的情况下从资产中的数据库中读取数据

How to read data from database in assets without copying

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

可能吗?

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

或者:

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

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

不,您不能那样做,因为所有资产都以二进制形式编译,并且 android 保留所有资产文件的名称,它可以在运行时从中访问文件...! Project Resources,请参阅 link

上的 main/assets

Android SQLiteDatabaseHelper 需要某种 InputStream...!

备选方案:

  • 您可以将数据库从资产目录复制到 android 应用程序目录。有关参考,请参阅 link...!

  • 您可以将数据库从assets复制到sdcard,然后访问它....!请参阅 this link..!

  • 您可以使用 JSON、XML 或 GS​​ON 格式代替 SQLITE(不推荐)

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

nativeOpen