zoukankan      html  css  js  c++  java
  • 升级应用时 升级数据库版本---保留原来的数据

    修改表定义  

    SQLite数库对ALTER TABLE命令支持非常有限,只能在表末尾添加列,不能修改列定义,不能删除已有的列。那么如果要修改表呢?我们可以采用临时表的办法。具体来说有四步:

    1. 将现有表重命名为临时表;

    2. 创建新表;

    3. 将临时表的数据导入新表(注意处理修改的列);

    4. 删除临时表。

    以例子中的v2升级到v3为例:

      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (oldVersion==2){
          db.execSQL("ALTER TABLE t_region RENAME TO t_region_temp");
          db.execSQL("CREATE TABLE t_region(_id integer primary key"
               + "autoincrement, region varchar, code varchar, "
               + "country varchar)");
          db.execSQL("insert into t_region(_id, region, code, country) " 
              + "select _id, region, code, "CHINA" from t_region_temp");
          db.execSQL("DROP TABLE t_region_temp");
        }
      }
  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    LeetCode
  • 原文地址:https://www.cnblogs.com/bimingcong/p/5358678.html
Copyright © 2011-2022 走看看