如何通过FMDB将NSdata保存并检索到sqlite中
我怎样才能保存NSData
到sqlite中,我正在使用FMDB封装保存数据。
下面是我到目前为止所尝试的代码
为了节省
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:model.expertArray];; NSString *query = [NSString stringWithFormat:@"insert into save_article values ('%@','%@','%@','%@','%@','%@')", model.Id, model.title, model.earliestKnownDate, data, model.excerpt,model.image_url];
为了追求
while([results next]) { NSData *data = [results dataForColumn:@"experts"]; NSMutableArray *photoArray = [NSKeyedUnarchiver unarchiveObjectWithData:data]; }
我已经尝试了数据typesblob和文本,但目前为止没有运气,任何人都可以指导我如何做到这一点?
以下是使用FMDB将NSData
插入Sqlite时可能面临同样问题的所有代码片段。
在我的情况下,我想存储NSArray
在Sqlite
所以我首先将NSArray
转换成NSData
,然后将其存储在Sqlite
。
将NSArray转换为NSData
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:YourNSarray];;
将NSData保存到Sqlite
[database executeQuery:@"insert into save_article values (?,?,?,?,?,?)", model.Id, model.title, model.earliestKnownDate, data, model.excerpt,model.image_url];
注意: –不要使用stringWithFormat
构build查询[下面是你不应该使用的代码]: 感谢@rmaddy&@hotlicks指点我:)
NSString *query = [NSString stringWithFormat:@"insert into user values ('%@', %d)", @"brandontreb", 25]; [database executeUpdate:query];
现在是最后一步, 即将NSData检索回NSArray
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:[database dataForColumn:@"yourcololumname"]];
希望这会帮助有需要的人和初学者:)
不要使用stringWithFormat:
构build查询stringWithFormat:
。 这有几个原因是一个坏主意。
使用executeQuery
方法,你把一个?
为每个值绑定到查询。
像这样的东西:
[database executeQuery:@"insert into save_article values (?,?,?,?,?,?)", model.Id, model.title, model.earliestKnownDate, data, model.excerpt,model.image_url];