在更新现有应用程序时创建新表

时间:2013-08-22 09:14:29

标签: android sqlite sql-update android-sqlite updates

我有一个已经发布到谷歌游戏商店的工作应用程序。我在我的应用程序中使用sqllite数据库来存储数据。我遇到了一个问题。

  1. 目前我的应用版本为例如1.1它只有一个表。我在我的数据助手类的onCreate()方法中创建。

  2. 在更新1.2中,我在我的数据库中添加了一个表,我在onUpgrade()方法中创建了该表。喜欢以下

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
    {
      db.execSQL(ShortCode.TABLE_CREATE_STATEMENT);
      onCreate(db);
    }
    
  3. 现在我有观察者,如果用户以前在他的手机中安装了1.1并且他更新到1.2,那么在用户中创建的两个表都可以使用app而没有任何问题。 但如果用户安装新副本或直接1.2应用程序崩溃。可以做些什么来避免这种情况。任何帮助将不胜感激。提前致谢。

3 个答案:

答案 0 :(得分:2)

在onUpgrade方法中,您需要删除现有表以备份数据。然后在onCreate中,您需要创建表并插入旧数据(如果有的话)....

答案 1 :(得分:0)

onCreate用于新安装的应用(或用户删除了应用的数据后) 更新应用时,即设备上已存在某些旧版本的数据时,会使用onUpgrade

1.2 app onCreate方法必须创建该版本所需的所有表格。

答案 2 :(得分:0)

`@Override     public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){         db.execSQL(" DROP TABLE IF EXISTS" + TABLE_Old1_TABLE);         db.execSQL(" DROP TABLE IF EXISTS" + TABLE_Old2_TABLE);         的onCreate(分贝);     }

在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);`