在应用运行时更新数据库

时间:2014-07-19 10:37:17

标签: android database sqlite

所以,这就是我的应用程序正在做的事情。我在互联网上有一个文件列表。我正在加载该文件并在手机上的数据库中保存位置。此外,我每24小时下载相同的文件,并检查它是否有一些更新。接下来我要做的是:我想在该文件中放入该文件的当前版本,当我下载它时,我检查该版本与前一版本,如果它们不同,我想删除当前表,并加载所有地点再次。

目前,我的应用程序正在执行以下操作:我有一个警报触发IntentService然后下载文件并检查每个位置(如果它在数据库中),如果不是,则插入它。

我想要:IntentService首先检查下载的文件版本是否与前一版本不同,如果是,则删除该表,并在新表中插入文件中的所有位置。

我正在使用ContentProvider和SQLiteOpenHelper管理我的数据库。 我想我应该以某种方式触发SQLiteOpenHelper的onUpgrade方法,但我不知道如何做到这一点。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您必须将onUpgrade方法放入所有数据库操作(ALTER TABLE,DROP等...),以便更新数据库,不要忘记增加数据库版本。

当您增加数据库版本时,将在更新后首次启动应用程序时自动调用onUpgrade方法。

编辑:

您可以使用静态字段设置数据库版本:

private static final int DATABASE_VERSION = 2;

并传递给超级构造函数:

super(context, DATABASE_NAME, null, DATABASE_VERSION);

并在需要更新数据库时调用DATABASE_VERSION(调用onUpgrade)。