SQLite数据升级

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

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代码

 1 private void upgradeTable(SQLiteDatabase db,String tablename){

 2         //1.修改原表表名    alter table TABLENAME rename to NewTableName;

 3         db.beginTransaction();

 4         String newTableName=tablename+"_temp";

 5         String sql="alter table "+ tablename +" rename to "+newTableName;

 6         Log.i(TAG,sql);

 7         db.execSQL(sql);

 8         Log.i(TAG, tablename+"--->"+newTableName);

 9         

10         //2.创建新表 ,且表名为 tablename

11         String newSQL="CREATE TABLE IF NOT EXISTS "+tablename+"("

12                 +"id integer primary key autoincrement,"

13                 +"name varchar,"

14                 +"age integer"

15                 + ")";

16         

17         db.execSQL(newSQL);

18         Log.i(TAG, tablename+"创建成功");

19         

20         //3.复制数据

21         String copySQL="insert into "+tablename+"(id,name)"+" select id,name from "+newTableName;

22         db.execSQL(copySQL);

23         Log.i(TAG, "数据复制成功");

24         

25         //4.删除临时表

26         String deleteSQL="drop table IF EXISTS "+newTableName;

27         db.execSQL(deleteSQL);

28         Log.i(TAG, newTableName+"删除成功");

29         

30         

31         db.setTransactionSuccessful();

32         db.endTransaction();

33     }

 

你可能感兴趣的:(sqlite)