应用程序无法使用SQLite资产助手

时间:2017-10-31 16:23:05

标签: android sqlite

我正在编写一个附带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

}

2 个答案:

答案 0 :(得分:1)

您需要增加版本号,然后使用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();
}

您可以在sample project

中找到详细信息

答案 1 :(得分:0)

  

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

如果数据库尚不存在,

SQLiteAssetHelper仅将数据库复制出资产。

  

我觉得必须有更好的方法

如果您未在运行时修改数据库,并且计划以新资产的形式向该数据库分发更新,则可以使用setForcedUpgrade()中涵盖的UIImageJPEGRepresentation。< / p>

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