1、错误场景
FMDB 框架本身是一个简单易用的框架。
最近,在执行insert Sql 语句的时候经常报错。
特别是NSInterger的数据,在插入的时候容易入库失败。
2、错误分析
官方文档,对于基本数据的插入,单独写了一个示例部分。
明确指出,在执行insert 的SQL语句的时候,
NSInterger 需要是NSNumber对象插入。
3、解决方法——官方文档
官方示例代码:
NSInteger identifier = 42;
NSString *name = @"Liam O'Flaherty ("the famous Irish author")";
NSDate *date = [NSDate date];
NSString *comment = nil;
BOOL success = [db executeUpdate:@"INSERT INTO authors
(identifier, name, date, comment) VALUES (?, ?, ?, ?)",
@(identifier), name, date, comment ?: [NSNull null]];if (!success) {
NSLog(@"error = %@", [db lastErrorMessage]);
}
官方解释:
Note: Fundamental data types, like the NSInteger variable
identifier, should be as a NSNumber objects, achieved by
using the @ syntax, shown above. Or you can use the
[NSNumber numberWithInt:identifier] syntax, too.
Likewise, SQL NULL values should be inserted as [NSNull
null]. For example, in the case of comment which might be
nil (and is in this example), you can use the comment ?:
[NSNull null] syntax, which will insert the string if
comment is not nil, but will insert [NSNull null] if it is nil.
翻译成中文:
注意:基本数据类型,如NSInteger变量标识符,应该作为NSNumber对象,
实现使用@语法,如上所示。 或者你可以使用[NSNumber numberWithInt:
identifier]语法也是。
同样,SQL NULL值应该插入为[NSNull 空值]。 例如,在可能的评论的情况
下 nil(在这个例子中),你可以使用这个注释吗?[NSNull null]语法,
它将插入字符串if注释不为零,但如果为无,则将插入[NSNull null]。
小结
对于第三方库的使用,还是应该通读一下英文文档。即使读不懂,也可以避免走很多弯路。
2017年06月01日16:20:32