Android技术8: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     }

 

Android技术8:SQLite数据升级,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。