处理预填充数据库上的sqlite数据库升级

时间:2018-12-24 23:38:07

标签: android android-sqlite sqliteopenhelper

在android studio中发布新版本的android应用后,我遇到了问题。

这是问题所在: 我有一个带有SQlite数据库的测验应用程序,其中的问题和答案已使用SQLite数据库浏览器填充。现在,当我向数据库表中添加新问题并创建新的数据库版本时,数据库似乎没有反映在更新的应用程序中。 我在网上找到的有关数据库升级的教程仅强调在应用程序启动时创建的数据库。像this

问题::仅当我向SQLite中已经存在的表中添加新记录时,才如何处理数据库升级?

我尝试过的事情: (1)在DatabaseOpenHelper OnUpgrade()方法中,我删除了添加新记录的表。

结果:应用程序崩溃的活动开始

(2)将OnUpdrade()方法保留为空。

结果:新添加的记录未反映

其他数据:DatabaseOpenHelper OnCreate()方法也为空

代码

@Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    db.execSQL("drop table if exists "+ DatabaseDescription.LectureNotes.TABLE_NAME);
    db.execSQL("drop table if exists "+ DatabaseDescription.QuestionAnswer.TABLE_NAME);
    db.execSQL("drop table if exists "+ DatabaseDescription.Test.TABLE_NAME);
    db.execSQL("drop table if exists "+ DatabaseDescription.Subjects.TABLE_NAME);
    db.execSQL("drop table if exists "+ DatabaseDescription.Topics.TABLE_NAME);
    db.execSQL("drop table if exists "+ DatabaseDescription.Year.TABLE_NAME);
}

1 个答案:

答案 0 :(得分:1)

预填充的数据库将仅从资产文件夹复制一次。

要使用预先填充的数据库的新版本进行更新,如果现有数据库中有需要保留的数据,则需要打开更新的更新数据库的副本,然后将相关的行或表复制到现有数据库中(例如,已回答的问题)。

下面是执行上述Update DB. Sqlite-asset-helper library

的示例