- (void)fillGongkeListOnAlbumImageAndLyricBackImageWithEmptyString
{
[[SLDatabase sharedDatabase] executeSQL:@"update gongke_list set album_image = '', lyric_back_image = '' where gk_id in (select gk_id from gongke_list)"];
}
- (void)checkGongkeListIfThereAnyExceptionWithVersion_1_5
{
@try {
SLStatement *stmt = [[SLDatabase sharedDatabase]prepareSQL:@"select album_image, lyric_back_image from gongke_list"];
[stmt executeOrNext];
[stmt close];
}
@catch (NSException *exception) {
PRINT_LOG(@"V1.5 数据库升级用户信息表...");
[[SLDatabase sharedDatabase]executeSQL:@"alter table gongke_list add album_image"];
[[SLDatabase sharedDatabase]executeSQL:@"alter table gongke_list add lyric_back_image"];
[self fillGongkeListOnAlbumImageAndLyricBackImageWithEmptyString];
}
}
今天做一些新功能,需要修改到数据库表结构。
增加了两个新字段。
数据库表结构及数据是由json表读取来的
json表的更新是通过跟服务器通讯直接打包发送过来的。
都是在 SocialSessionDatabase 单例(数据库接口函数,做成一个单例)的初始化完成的。
由于功课的json是通过协议直接获取,跟其他json的更新方式不一样,
并且在获取后直接更新到数据库,即有可能数据库单例已经初始化完成了,不会再检查是否添加了新字段
这样就会有个问题,例如当数据口接口单例已经初始化完毕后,此时如果更新了json表,并开始插入数据,就会产生异常。
所以在这里,每次更新前我们都要进行检测新字段的增加。
另外,增加了新字段后,在没有写入数据前,先读取数据会出现异常。
不明白为什么,出现错误的地方在:sqlite3_column_text()这个函数。