【问题标题】:Is there any way to use a pre-existing database from Xamarin without copying it from Assets?有没有办法使用 Xamarin 中预先存在的数据库而不从资产中复制它?
【发布时间】:2015-06-22 08:02:40
【问题描述】:

我有一个相当大的 SQLite 数据库 (~20 mb) 我需要从我的 Android Xamarin-Forms 应用程序访问。

我在网上阅读的所有内容都说您可以通过首先将数据库复制到文件系统来读取数据库。例如,this question。但是,这是否意味着复制了大型数据库,浪费了用户宝贵的空间(并且几乎使我的应用程序占用空间增加了一倍)

必须有一种方法可以直接从资产中读取 SQLite 数据库,或者使用其他方法将数据库与我的应用程序捆绑在一起,这样不会浪费太多空间。但是我该怎么做呢?

【问题讨论】:

  • 如果数据库结构足够简单,您可以在运行时生成条目,即第一次创建数据库。如果不是这样,我同意你已经得到的答案。顺便说一句,您在数据库中存储了什么以达到 20 mb?
  • @Blackbelt:日语单词/字符的字典(等)数据。 JMDict 的 XML 版本是 45mb,这就是我使用 SQLite 解析/存储/压缩它的原因。

标签: android xamarin xamarin.forms


【解决方案1】:

您不想从资产中使用它,即使可以,因为资产是压缩的只读文件,是您安装的一部分。您无法向其中写入更新,这会杀死 90% 的数据库使用。而且它在拉上拉链时阅读效率低下。所以你确实需要复制它。如果您担心磁盘空间,请考虑从网络下载它,而不是将其保存在您的 apk 中。

【讨论】:

  • 是否有其他方法可以将此数据库包含在我的应用程序中,不会占用太多空间?数据库已经被很好地压缩了。
  • 并非如此。资产和原始文件是包含文件作为应用程序一部分的唯一方法,将其移动到原始文件不会节省任何空间——apk 本身就是一个 zip 文件。它会让它变得尽可能小。就像我说的 - 如果您真的担心双倍磁盘空间,请在第一次启动时下载它。
猜你喜欢
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多