如何通过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时可能面临同样问题的所有代码片段。

在我的情况下,我想存储NSArraySqlite所以我首先将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];