zoukankan      html  css  js  c++  java
  • Android -- 面试 -- 数据库升级策略

    升级:重写onUpgrade方法

    1. 确定 相邻版本 的差别,从版本1开始依次迭代更新,先执行v1到v2,再v2到v3……
    2. 为 每个版本 确定与现在数据库的差别,为每个case撰写专门的升级代码。

    降级

    onDowngrade()数据库降级:比如从数据库4降级到数据库3必须重写该方法。

    @Override
        public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            super.onDowngrade(db, oldVersion, newVersion);
        }

    迁移数据:

    1. 将现有表重命名为临时表;
    2. 创建新表;
    3. 将临时表的数据导入新表(注意处理修改的列);
    4. 删除临时表。
    protected void upgradeTables(SQLiteDatabase db, String tableName, String columns)  
    {  
        try  
        {  
            db.beginTransaction();  
    
            // 1, 将现有表重命名为临时表
            String tempTableName = tableName + "_temp";  
            String sql = "ALTER TABLE " + tableName +" RENAME TO " + tempTableName;  
            execSQL(db, sql, null);  
    
            // 2, 创建新表  
            //onCreateTable(db); 
            createNewTableX(db);
    
            // 3, 将临时表数据导入新表中
            sql =   "INSERT INTO " + tableName +  
                    " (" + columns + ") " +  
                    " SELECT " + columns + " FROM " + tempTableName;  
    
            execSQL(db, sql, null);  
    
            // 4, 删除临时表 
            execSQL(db, "DROP TABLE IF EXISTS " + tempTableName, null);  
    
            db.setTransactionSuccessful();  
        }  
        catch (SQLException e)  
        {  
            e.printStackTrace();  
        }  
        catch (Exception e)  
        {  
            e.printStackTrace();  
        }  
        finally  
        {  
            db.endTransaction();  
        }  
    }  
  • 相关阅读:
    汇编语言 第二单元 整理
    iOS10推送必看UNNotificationServiceExtension
    RSA加,解密
    添加购物车动画
    长按移动cell
    http live streming
    修改工程
    searbar
    tableView 编辑模式
    iOS 3D touch
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/7041460.html
Copyright © 2011-2022 走看看