【问题标题】:Accessing SQLite database from Assets Folder without copying to user's data folder从资产文件夹访问 SQLite 数据库而不复制到用户的数据文件夹
【发布时间】:2015-07-17 12:08:18
【问题描述】:

在我的 iOS 应用程序中,我有一个大型 (270MB)、预填充的只读 sqlite 数据库。我将数据保存在应用程序包中并毫无问题地查询它。我不会将数据库复制到用户的文档文件夹中,因为在这种情况下使用重复的数据库占用更多空间是没有意义的。我有一个单独的小得多的数据库,我将其复制到用户的文档文件夹中以存储用户的首选项。该应用程序运行良好。

现在我正在尝试使用 Android Studio 将我的应用程序移植到 Android,但似乎无法从资产文件夹访问数据库。我已经找到了大量关于 Android 数据库帮助程序类的文档,我已经尝试过了,但方法似乎总是将数据库从资产文件夹复制到用户的数据文件夹。这会浪费空间,而且根据我的经验,应用程序无法在不崩溃的情况下复制数据库(可能是因为大小的原因?复制较小的测试数据库没有问题)。

有没有办法在不将数据库复制到用户的数据文件夹的情况下访问数据库?如果没有,谁能想到另一种解决方法?

【问题讨论】:

  • 否 没有办法。这不是 iOS
  • 不,设备上没有像“资产文件夹”这样的物理东西
  • 你不能将 iOS 完全移植到 Android 上,虽然 Android 提供了很多自定义,但有些事情是 Android 做不到的。

标签: android sqlite android-studio android-assets


【解决方案1】:

不,您不能直接写入应用程序中资产文件夹的文件,因为资源文件夹是只读的。

因此,您必须先将数据库从资产文件夹强制复制到 sdcard,然后只有您才能读取和写入。

【讨论】:

  • @DerGolem 非常感谢。 :)
  • 我认为您无法写入 assets 文件夹,但我希望有某种方法可以打开并从中读取,但猜不到。谢谢
  • 投反对票。他专门问了关于 READING 的问题,所以这个答案根本没有意义。
【解决方案2】:

正如GrIsHu所说,您只能从资产文件夹中读取数据库。如果你需要做更多的操作,比如创建、更新、删除,你可以做一个小技巧。将数据库从资产文件夹复制到存储,然后您可以做任何您想做的事情。

这是Working with Android Pre Built Database. 的一个简单示例

还有一个易于使用的库,用于从资产文件夹访问数据库。你可以在这里查看[Android SQLiteAssetHelper]。2祝你好运!

【讨论】:

  • 问题是所有的答案和教程都告诉你复制它,即使你只想从中阅读,正如 OP 所说的那样。
猜你喜欢
  • 1970-01-01
  • 2014-01-02
  • 2011-02-06
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多