首页 > 数据库技术 > 详细

升级应用时 升级数据库版本---保留原来的数据

时间:2016-04-06 12:58:28      阅读:355      评论:0      收藏:0      [点我收藏+]

修改表定义  

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");
    }
  }

升级应用时 升级数据库版本---保留原来的数据

原文:http://www.cnblogs.com/bimingcong/p/5358678.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!