-1

我做的应用程序正在发挥作用。我修复了一些错误,现在我想进行更新。我之前在过去的构建中创建了表。如果应用程序遇到我创建表的行,它会忽略还是应该明确检查表是否存在?使用 PreferenceVariables

if(preference_variables.contains("tables_created")) { 
    // dont create table
}  else {
    createTables();
}
4

1 回答 1

0

使用SQLiteOpenHelper类。它提供了创建相应的必要机制。根据数据库版本、namleyonCreateonUpgrade方法升级您的数据库表。请参阅此 SO 条目以获得很好的解释。

详细解释

想象一下您的应用程序从 1.0 版演变到 3.0 版的过程。

因此,在 1.0 版中,您可以说一张包含一些列的表。用户下载并运行它, onCreate() 被调用,你创建表,一切都很好。

现在您发布版本 2.0,它有另一个表并在第一个表中添加了一些列。现在您将拥有两种用户。从 1.0 版本升级的用户和没有 1.0 版本但下载并安装 2.0 版本的新用户。现在对于现有用户,onUpgrade() 将被调用,因此您在此处放置代码以创建第二个表并更改第一个表以添加新列。对于新用户,正在调用 onCreate(),因此您必须更改该方法以创建两个表,第一个和第二个。

现在你发布了 3.0 版,比如第三个表。现在您将拥有三种用户。从 2.0 版升级的,从 1.0 版升级的(未安装 2.0 版)和新用户。同样,对于现有用户 onUpgrade() 将被调用。现在您必须根据 oldVersion 和 newVersion 的值进行升级。newVersion 将为 3,oldVersion 将为从 1.0 版升级的用户为 1 - 因此对于那些从 2.0 版升级的用户将需要两次,对于从 2.0 版升级的用户,oldVersion 将为 2,因此您只需创建第三个表。再一次,对于新用户 onCreate() 将被调用,在这里你现在必须创建所有三个表。

我希望这是足够的解释。

于 2013-09-05T19:06:00.970 回答