SQLite数据库在更新时挂起

时间:2013-10-07 01:10:06

标签: ios objective-c sqlite sql-update

我一直在研究一个问题几个小时,并会对任何外部投入表示感谢。我是iOS,Objective-C和SQLite的新手,并尝试执行SQLite Update语句。问题是UI冻结并且似乎在SQLite中的进程中挂起。

以下是代码:

NSString *docsPath = [paths objectAtIndex:0];
NSString *path = [docsPath stringByAppendingPathComponent:@"SQLite3Database.sqlite"];
SQLite3_instance *db = [SQLite3_instance databaseWithPath:path]; 
[db open];

NSString *execUpdate = [NSString stringWithFormat:@"update ListItem set status=%i,message=\"%@\",GPSLong=%@, GPSLat=%@,lastUpdated=DateTime('now') where userID = %@",[Status_Picker selectedRowInComponent:0],messageTextField.text , longitude, latitude,loggedinUserID];
NSLog(@"execUpdate: %@", execUpdate);
if (![db executeUpdate:execUpdate])
    NSLog(@"Data insert failed %@", db.lastErrorMessage);

此代码在单击UIButton后在IBAction中执行,但如前所述,UI在进程中挂起。上面代码的输出如下:

* execUpdate:update ListItem set status = 0,message =“”,GPSLong = 44.48916,GPSLat = 6.28739,lastUpdated = DateTime('now')其中userID = 1 * < /强>

有人能看到这段代码是如何挂断的吗?

看起来问题是Xcode内存泄漏。经过几个小时的冲击,我的头再次撞墙,关闭并再次启动它解决了这个问题。

1 个答案:

答案 0 :(得分:1)

您确定另一个进程/线程没有针对数据库打开事务吗?这会导致这种行为。