【问题标题】:Isn't this data redundancy in android databases?这不是android数据库中的数据冗余吗?
【发布时间】:2015-03-03 20:30:14
【问题描述】:

我正在学习 android 中的数据库,我意识到在 android 中,并不是您创建数据库并将其放在内存中的某个位置并访问它,而是您在应用程序中创建和放置数据。我学会了一种在代码之外创建我的SQlite DB 并将其复制到 assets 文件夹并使用 InputStream 将其复制到新创建的 DB 的方法,您可以从 HERE 找到此代码

所以我的问题是,这不是这种数据冗余,因为我已经在 .apk 文件中创建了数据库包,同时当应用程序第一次运行时,我创建了另一个数据库并将我的数据复制到新创建的数据库?

我知道还有其他方法可以做到这一点,例如创建一个 XML 文件,甚至使用 INSERT 操作将数据放入数据库,但所有这些方法不都是额外的工作吗?

【问题讨论】:

    标签: android database sqlite redundancy


    【解决方案1】:

    所以我的问题是,这不是这种数据冗余,因为我已经在 .apk 文件中创建了数据库包,同时当应用程序第一次运行时,我创建了另一个数据库并将我的数据复制到新创建的数据库中?

    您将拥有两份数据副本,一份在资产中,一份在内部存储中。资产副本应压缩在 ZIP 存档中,这会有所帮助。

    顺便说一句,我希望你是using SQLiteAssetHelper

    我知道还有其他方法可以做到这一点,例如创建一个 XML 文件,甚至使用 INSERT 操作将数据放入数据库,但不是所有这些方法都是额外的工作吗?

    是的。

    避免冗余副本的唯一方法是在您的应用首次运行时从 Internet 下载数据库。但是,这需要 Internet 访问,这对当时的用户来说可能不方便。

    【讨论】:

    • 如何使用 SQLiteAssetHelper?我在 app/gradle.build 添加了这一行,但我无法导入 com.readystatesoftware.sqliteasset.SQLiteAssetHelper
    • @Morteza:您的build.gradle 文件一定有问题。除了库的 repo 上的示例应用程序here is another sample app,这个绝对设置为与 Android Studio 和 Gradle for Android 一起使用。
    • 似乎我有阻止 AS 下载库的 Internet 代理设置,通过刷新代理设置解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多