Android 在应用程序运行时更新数据库

Android 在应用程序运行时更新数据库,android,database,sqlite,Android,Database,Sqlite,这就是我的应用程序所做的。我在互联网上有一个文件,上面有一个位置列表。我正在加载该文件并将位置保存在手机上的数据库中。此外,每24小时我都会加载同一个文件,并检查它是否有更新。我想做的是下一步:我想把文件的当前版本放入该文件中,当我下载它时,我会检查该版本与前一个版本,如果它们不同,我想删除当前表,并再次加载所有位置 目前,我的应用程序正在执行以下操作:我有一个警报,它会触发IntentService,然后IntentService会下载文件并检查每个位置是否在数据库中,如果不在,则会插入文件

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

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

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

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


任何帮助都将不胜感激。

您必须将所有数据库操作放入onUpgrade方法中更改表、删除等。。。更新数据库的必要性,不要忘记增加数据库版本

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

编辑:

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

private static final int DATABASE_VERSION = 2;
并传递给超级构造函数:

super(context, DATABASE_NAME, null, DATABASE_VERSION);

并在需要将数据库调用更新为onUpgrade时增加数据库版本。

这是否意味着我应该在SQLiteOpenHelper的构造函数中增加数据库版本?是的,我建议使用静态字段设置数据库版本。并作为参数传递给超级构造函数,但我的问题是,我正在从ContentProvider的onCreate方法调用该构造函数,我认为onCreate是在应用程序启动时调用的。在这种情况下,我应该从哪里调用构造函数?我可以把我的代码,如果它是容易的,您通常可以从任何地方调用数据库构造函数。唯一需要的代码更改是版本增量和onUpgrade方法实现。当您第一次调用数据库构造函数时,将调用onUpgrade方法。如果我理解,这意味着我可以使用新版本的数据库从IntentService调用数据库构造函数。我说得对吗?