我做的应用程序正在播放中。我修复了一些错误,现在我想进行更新。我以前在过去的build中创建了表。如果app遇到我创建表的行,它会忽略还是我应该显式检查表是否存在?使用PreferenceVariables
if(preference_variables.contains("tables_created")) {
// dont create table
} else {
createTables();
}
答案 0 :(得分:0)
使用SQLiteOpenHelper课程。它提供了创建resp所需的机制。根据数据库版本升级数据库表,使用onCreate
和onUpgrade
方法。 See this SO entry有一个很好的解释。
详细解释
想象一下您的应用从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,对于从1.0版本升级的用户,oldVersion将为1 - 因此对于那些需要升级版本2.0的用户,对于从版本2.0升级的用户,oldVersion将为2,因此您只需要创建第三个表。再次,对于新用户onCreate()将被调用,在这里你必须现在创建所有三个表。
我希望这是足够的解释。