在Android中升级数据库的正确方法是什么?

时间:2015-05-15 05:28:39

标签: android sqlite

如果我想保留一些旧数据并迁移到新版本的数据库,onUpgrade方法中的正确步骤是什么?

  1. 保留旧数据
  2. 删除旧表
  3. 创建新表并插入旧数据
  4. 是否有简化版或有更好的方法?谢谢!

1 个答案:

答案 0 :(得分:3)

升级数据库:

在表格中添加新字段

执行onUpgrade中的以下步骤

  1. 复制临时表中的旧数据

  2. 使用新字段创建新表

  3. 再次将数据从临时表复制到新表

  4. drop temp table

  5. 还在onCreate中为新用户创建新表

    升级时的示例代码

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                if (oldVersion < newVersion) {
                    if (oldVersion == 3) {
                        /**
                         * code is upgrade privious version to letest version
                         * */
                        db.beginTransaction();
                        db.execSQL("ALTER TABLE " + TableConstants.TABLE_Mst.getTableName()
                    + " RENAME TO " + TableConstants.TABLE_Mst.getTableName() + "_Obsolete");
            db.execSQL(TABLE_CREATE_query_Mst);
            db.execSQL("INSERT INTO " + TableConstants.TABLE_Mst.getTableName() + "("
                    + "f1, f2, f3) "
                    + " SELECT f1, f2, f3 FROM " + TableConstants.TABLE_Mst.getTableName() + "_Obsolete");
            db.execSQL("DROP TABLE IF EXISTS "
                    + TableConstants.TABLE_Mst.getTableName() + "_Obsolete");
                        db.setTransactionSuccessful();
                        db.endTransaction();
                        db.setVersion(newVersion);
    
                    }
                    }
                    }
    

    在数据库中添加新表

    执行以下步骤

    在onUpgrade中

    1.创建新表

    在onCreate中

    1.创建新表

    注意:管理您的数据库版本,下一版本相同,请检查旧版本的工作与否。