1

我有一个已经发布到谷歌游戏商店的工作应用程序。我在我的应用程序中使用 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);
    }
    

现在我有什么观察者,如果用户以前在他的手机中安装了 1.1 并且他更新到 1.2,这两个表都是在用户中创建的,可以毫无问题地使用应用程序。但如果用户安装新副本或直接 1.2 应用程序崩溃。可以做些什么来避免这种情况。任何帮助将不胜感激。提前致谢。

4

3 回答 3

2

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

于 2013-08-22T09:23:36.050 回答
0

onCreate用于新安装的应用程序(或在用户删除您的应用程序数据之后)。
onUpgrade当您的应用程序更新时使用,即设备上已经存在某些旧版本的数据时。

onCreate1.2 应用程序的方法必须创建该版本所需的所有表。

于 2013-08-22T09:20:36.693 回答
0

`@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS" + TABLE_Old1_TABLE); db.execSQL("如果存在则删除表" + TABLE_Old2_TABLE); 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);`
于 2016-09-23T12:56:12.413 回答