Android 在更新现有应用程序时创建新表
我有一个工作应用程序,已经发布到谷歌游戏商店。我在应用程序中使用sqllite数据库来存储数据。我有一个问题如下Android 在更新现有应用程序时创建新表,android,sqlite,sql-update,android-sqlite,updates,Android,Sqlite,Sql Update,Android Sqlite,Updates,我有一个工作应用程序,已经发布到谷歌游戏商店。我在应用程序中使用sqllite数据库来存储数据。我有一个问题如下 目前我的应用程序版本为eg 1.1,它只有一个表。我在data helper类的onCreate()方法中创建了它 在更新1.2中,我在onUpgrade()方法中创建的数据库中又添加了一个表。像下面 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(Sho
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL(ShortCode.TABLE_CREATE_STATEMENT);
onCreate(db);
}
但若用户安装了fresh copy或直接安装1.2应用程序,应用程序就会崩溃。可以采取哪些措施来避免这种情况。任何帮助都将不胜感激。提前谢谢
onCreate
用于新安装的应用程序(或在用户删除应用程序数据后)。onUpgrade
在更新应用程序时使用,即当设备上已经存在某个旧版本的数据时
您的1.2应用程序的
onCreate
方法必须创建该版本所需的所有表。在onUpgrade方法中,您需要删除备份数据的现有表。然后在onCreate中,您需要创建表并插入旧数据(如果有)…`@Override
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
db.execSQL(“如果存在删除表”+表\u Old1\u表);
db.execSQL(“如果存在删除表”+表\u Old2\u表);
onCreate(db);
}
在onCreate()方法中,您可以创建一个如下所示的新表-
`String CREATE_New_Table = "CREATE TABLE IF NOT EXISTS " + TABLE_New_TABLE + "(" + KEY_ID
+ " INTEGER PRIMARY KEY," + Id + " TEXT, " + Address + " TEXT, " + AppName + " TEXT " + ")";
db.execSQL(CREATE_Village_Table);`
我已经在我的应用程序中这样做了。但这是唯一的解决办法吗?如果是这样,那么实施onUpgrade()有什么好处?