我有以下行,当它与:
一起运行时会在FMDB上崩溃-[FMDatabase executeUpdate:error:withArgumentsinArray:orDictionary:orVAList:]
我的代码是:
NSInteger entryID = 1;
[db executeUpdate:@"UPDATE formQue SET Processed='true' WHERE EntryID=?", entryID];
很高兴能够显示更多代码等但我已经将崩溃范围缩小到了这一行并且它并没有真正影响任何其他代码。
表:
formQue(EntryID INTEGER PRIMARY KEY,CustomerID int,Title text,FName text,LName text,DOB text,Country text,Email text,national text,Processed text,courseType text,Notes text,YearEntry text,Event text)< / p>
这就是崩溃发生时xcode的样子
答案 0 :(得分:3)
问题是FMDB期望绑定参数是对象。您使用的是NSInteger
,这是一种简单的C类型。
来自FMDB类文档:
要绑定的可选参数? SQL语句中的占位符。这些应该是Objective-C对象(例如NSString,NSNumber等),而不是基本的C数据类型(例如int,char *等)。
尝试将参数装入NSNumber
:
NSInteger entryID = 1;
[db executeUpdate:@"UPDATE formQue SET Processed='true' WHERE EntryID=?", [NSNumber numberWithIntger:entryID]];
或者更简洁地使用现代语法:
NSInteger entryID = 1;
[db executeUpdate:@"UPDATE formQue SET Processed='true' WHERE EntryID=?", @(entryID)];