android数据库升级方法及注意事项

数据库的onCreate方法有几点要注意
● 在第一次打开数据库的时候才会走
● 在清除数据之后再次运行–>打开数据库,这个方法会走
● 没有清除数据,不会走这个方法
● 数据库升级的时候这个方法不会走
数据库的onUpgrade方法有几点注意事项
● 第一次创建数据库的时候,这个方法不会走
● 清除数据后再次运行(相当于第一次创建)这个方法不会走
● 数据库已经存在,而且版本升高的时候,这个方法才会调用
升级数据库
● 修改数据库后,一定要记得增加数据库版本号 +1 . 否则不会走onUpgrade方法.
● 对于不重要的表,如果没有必要保留数据,则可以选择直接删除表后在创建表。

@Override  
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
    db.execSQL("drop table if exists Book"); 
    onCreate(db);  
} 

● 升级数据库版本号要比老的版本大,但是跨版本升级时需要判断好中间版本号,依次升级,跳版本升级会导致缺少中间版本的字段。
● 删旧表迁移数据到新表

try
    {
        db.beginTransaction();
        String tempTableName = tableName + "_temp";
        String sql = "ALTER TABLE " + tableName +" RENAME TO " + tempTableName; // // 重命名旧表为tmep
        db.execSQL(sql);

        createHistoryDiagTable(db);// 创建新表新增了字段,名称原来旧表名 此时数据空

        sql =  "INSERT INTO " + tableName  + " SELECT  id,item1,item2,' '  FROM " + tempTableName;
        db.execSQL(sql);// 将旧表数据复制到新表

        sql =  "DROP TABLE IF EXISTS " + tempTableName; // 删除旧表
        db.execSQL(sql);

        db.setTransactionSuccessful();
    }
catch (Exception e)
    {
        e.printStackTrace();
    }
finally
    {
        db.endTransaction();
    }

如果正常添加字段,则使用 “Alter table 表名 add column 字段 类型”。
注意升级数据库版本后,要在创建表的方法中同步添加字段,不然第一次安装的,不会走升级方法,不会执行添加字段的SQL,所以升级数据库,两个地方要修改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值