繁体   English   中英

应用程序不显示 SQLite Asset Helper 的数据库更改

[英]App doesn't show database changes with SQLite Asset Helper

我正在编写一个与 SQLite 数据库打包在一起的应用程序。

我正在逐渐添加到数据库中,但是当我在 Android Studio 中编译代码时,应用程序没有看到最新的更新。

我发现的解决方法是更改数据库的文件名并在代码中对其进行更新,但是如果我进行频繁更新,这将变得非常烦人,我觉得必须有更好的方法。

对于它的价值,这里是相关的代码片段:

public class DatabaseHelper extends SQLiteAssetHelper {

    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_NAME = "database5.db";
    private static final String BOOKS = "books";
    private static final String AUTHORS = "authors";

    public DatabaseHelper (Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    // etc

}

您需要增加版本号然后使用setForcedUpgrade() 像这样的东西:

private static final int DATABASE_VERSION = 2;

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);  

    // call this method to force a database overwrite every time the version number increments:
    //setForcedUpgrade();
}

您可以在示例项目中找到详细信息。

当我在 Android Studio 中编译代码时,应用程序看不到它的最新更新

如果数据库尚不存在, SQLiteAssetHelper仅从资产中复制数据库。

我觉得一定有更好的方法

如果您没有在运行时修改数据库,并且计划以新资产的形式向该数据库分发更新,则可以使用setForcedUpgrade() ,如文档所述

否则,您可以在更改数据库时卸载应用程序,或者在更改数据库时清除设置中的应用程序数据。

只需从资产文件夹更改您的 sqlite 数据库文件名,如下所示 [1]: https://i.stack.imgur.com/77p6K.jpg [这里我将名称 Quran.db 更改为 Quran1.db]

从 class 您可以访问它。 [1]: https://i.stack.imgur.com/x710F.jpg [从 class 我也将 Quran.db 更改为 Quran1.db]

这种方法对我很有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM