OC

Knowledge OS
登录 注册
全部话题 移民 创业 iOS Mac Objective-C Swift Android 招聘 求职

好诡异的bug,fmdb创建表不成功。。。各位帮忙看看!

sam
sam 发布于 2013年09月24日
无人欣赏。
 for (int i=1; i<arr.count; i ++) {
 NSString * schame = [diclistData objectForKey:[arr objectAtIndex:i]];
 NSString * table = [arr objectAtIndex:i];
 NSString *successDropTable = [[NSUserDefaults standardUserDefaults] objectForKey:
 [NSString stringWithFormat:@"%@%d_%@_successDrop",App_Version,enterpriseno,table]];
 if (!successDropTable ) {
 successDropTable = @"";
 }
 NSLog(@"the successDropTable :%@_%di:%d",successDropTable,enterpriseno,i);
 // if ([successDropTable isEqualToString:@"yes"]) {
 // continue;
 // }
 // else{
 [DBConnection updateTheTableStructureWith:table WithSchame:schame success:^(BOOL issuccess) {
 if (issuccess) {
 NSLog(@"creattable success");
 [[NSUserDefaults standardUserDefaults] setObject:@"yes" forKey:[NSString stringWithFormat:@"%@%d_%@_successDrop",App_Version,enterpriseno,table]];
 }
 } failure:^(NSError *error) {
 }];
 // }
 }

for里面的if判断如果注释掉,直接执行创建表的方法,则可以成功新建表,反之加if判断,同样执行了if里面的方法,新建表不成功(有输出creattable success,实际数据库里没有新表)。。。

fmdb的建表方法:

+ (void)updateTheTableStructureWith:(NSString *)table
 WithSchame:(NSString *)schame
 success:(void(^)(BOOL issuccess))success
 failure:(void(^)(NSError *error))failure{
FMDatabase *db = [DBConnection getSharedDatabase];
[db open];
if ([db tableExists:table]){
 NSString *sql = [NSString stringWithFormat:@"DROP TABLE IF EXISTS %@ ",table];
 BOOL dropsuccess = [db executeUpdate:sql];
 NSLog(@"Error %d : %@",[db lastErrorCode],[db lastErrorMessage]);
 if (dropsuccess) {
 NSLog(@"DROP tablbe secceuful->-> %@",table);
 NSLog(@"Error %d : %@",[db lastErrorCode],[db lastErrorMessage]);
 }
 NSString *creatTablesql = [NSString stringWithFormat:@"%@",schame];
 BOOL creatsuccess = [db executeUpdate:creatTablesql];
 //if (creatsuccess) {
 NSLog(@"update Error %d : %@",[db lastErrorCode],[db lastErrorMessage]);
 NSLog(@"Creat tablbe secceuful ->->%@-->%@",table,schame);
 success(creatsuccess);
 // }
}
else{
 NSString *creatTablesql = [NSString stringWithFormat:@"%@",schame];
 BOOL csuccess = [db executeUpdate:creatTablesql];
 // if (csuccess) {
 NSLog(@"update Error %d : %@",[db lastErrorCode],[db lastErrorMessage]);
 NSLog(@"Creat tablbe secceuful ->->%@-->%@",table,schame);
 // }
 success(csuccess);
}
[db close];

}

共3条回复
楼长 ·
tinyfool 回复于 2013年09月24日

有没有什么错误信息和提示?

2楼 ·
sam 回复于 2013年09月24日
updateTheTableStructureWith 

这个方法里的输出,提示没有错误,输出 update Error 0 : not an error

3楼 ·
sam 回复于 2013年09月24日

1楼 @tinyfool 诡异的是注释那个if判断后,就成功新建表。。。加个判断,两样是执行了建表方法,倒不成功了。。。updateTheTableStructureWith 这个方法输出提示也是 update Error 0 : not an error ,就是数据库没有新添的表

登录 或者 注册

AltStyle によって変換されたページ (->オリジナル) /