break;
}
}
2. 在之前基础上创建新的表
这种情况也比较简单,主要是新版比之前的版本创建新的表,而且这个表跟之前的表没有什么关系。这时同时也要在onCreate中加上执行创建的sql(针对新用户)。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1://这里的数值是上次的版本,也就是针对上次的版本,本次的版本要做哪些改变
//这种情况需要同时在onCreate中加上执行新表的创建sql(针对新用户)
db.execSQL(xxxxx);
default:
break;
}
}
3. 在老表基础上新增字段
这种情况需要修改老的表新增字段
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1://这里的数值是上次的版本,也就是针对上次的版本,本次的版本要做哪些改变
//这种情况需要同时在onCreate中加上执行新增字段的创建表sql(针对新用户)
db.execSQL("ALTER TABLE TableEvent.CREATE_SQL ADD COLUMN TableEvent.xxx VARCHAR(255)");
default:
break;
}
}
4. 数据库升级时保留老的数据并同步到新的表当中
这种情况是新表保留老表的字段结构情况
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1://这里的数值是上次的版本,也就是针对上次的版本,本次的版本要做哪些改变
//老的表重命名
String CREATE_TEMP_BOOK = "alter table book rename to _temp_book";
//创建新的表,表名跟原来一样,并保留原来的字段
String CREATE_BOOK = "create table book(bookId integer primarykey, bookName text);";
//将重命名后的老表中的数据导入新的表中
String INSERT_DATA = "insert into book select *,‘‘ from _temp_book";
//删除老表
String DROP_BOOK = "drop table _temp_book";
db.execSQL(CREATE_TEMP_BOOK);
//这句要同时放到onCreate中,针对新用户
db.execSQL(CREATE_BOOK);
db.execSQL(INSERT_DATA);
db.execSQL(DROP_BOOK);
default:
break;
}
}
5. 新表跟以前的表字段结构完全不一样
这种情况是新表跟以前字段结构完全不一样或者说有大部分的差异,跟上面第4种处理差不多,但是需要手动查询老表的某些字段的数据然后插入的新表的对应字段,最后删除老表即可。
前面几种情况是单级升级的时候,针对上次的版本本次的版本需要做的处理,如果是跨级升级,比如用户app很久没有更新了,这次升级数据库版本从1升到了3,或者2升到了6,这时需要分开处理每次的版本:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
db.execSQL(CREATE_TBL_CATEGORY) // 建立新表
case 2:
db.execSQL("ALTER TABLE Book ADD COLUMN category_id INTEGER"); // 增加字段
case 3:
//同步老的数据到新的表
String CREATE_TEMP_BOOK = "alter table book rename to _temp_book";
String CREATE_BOOK = "create table book(bookId integer primarykey, bookName text);";
String INSERT_DATA = "insert into book select *,‘‘ from _temp_book";
String DROP_BOOK = "drop table _temp_book";
db.execSQL(CREATE_TEMP_BOOK);
db.execSQL(CREATE_BOOK);
db.execSQL(INSERT_DATA);
db.execSQL(DROP_BOOK);
default:
break;
找工作是个很辛苦的事情,而且一般周期都比较长,有时候既看个人技术,也看运气。第一次找工作,最后的结果虽然不尽如人意,不过收获远比offer大。接下来就是针对自己的不足,好好努力了。
最后为了节约大家的时间,我把我学习所用的资料和面试遇到的问题和答案都整理成了PDF文档,都可以分享给有需要的朋友,如有需要私信我【资料】或者【点这里】免费领取
喜欢文章的话请关注、点赞、转发 谢谢!
标签: