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