大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > Android技巧 > SQLite数据升级

SQLite数据升级

关键词:SQLite数据升级Android  阅读(909) 赞(11)

[摘要]本文是对SQLite数据升级的讲解,对学习Android编程技术有所帮助,与大家分享。

由于应用程序的升级,往往伴随着数据库的升级,数据库升级一般设计表的增加与删除,表添加删除字段,数据的备份等操作。

1.数据库升级

我们都通过继承SQLiteOpenHelper类,实现对数据库的操作和版本升级等。版本升级有关方法onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);

当版本号大于当前数据库版本号,会调用onUpgrade方法。

2.演示数据库升级

对于表的增删相对比较简单,下面演示添加字段。

2.1原始数据库sql

private static final String SQL="CREATE TABLE IF NOT EXISTS "+TABLE+"("
+"id integer primary key autoincrement,"
+"name varchar"
+ ")";

为两个字段 id ,name;

2.2步骤

修改原表表名-->新建新表-->将原来表数据复制到新表-->删除原表

2.3代码

 private void upgradeTable(SQLiteDatabase db,String tablename){
         //1.修改原表表名    alter table TABLENAME rename to NewTableName;
         db.beginTransaction();
         String newTableName=tablename+"_temp";
         String sql="alter table "+ tablename +" rename to "+newTableName;
         Log.i(TAG,sql);
         db.execSQL(sql);
         Log.i(TAG, tablename+"--->"+newTableName);
         
         //2.创建新表 ,且表名为 tablename
         String newSQL="CREATE TABLE IF NOT EXISTS "+tablename+"("
                 +"id integer primary key autoincrement,"
                 +"name varchar,"
                 +"age integer"
                 + ")";
         
         db.execSQL(newSQL);
         Log.i(TAG, tablename+"创建成功");
         
         //3.复制数据
         String copySQL="insert into "+tablename+"(id,name)"+" select id,name from "+newTableName;
         db.execSQL(copySQL);
         Log.i(TAG, "数据复制成功");
         
         //4.删除临时表
         String deleteSQL="drop table IF EXISTS "+newTableName;
         db.execSQL(deleteSQL);
         Log.i(TAG, newTableName+"删除成功");
         
         
         db.setTransactionSuccessful();
         db.endTransaction();
     }


相关评论