如何将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];
用于Retriving
while([results next]) {
NSData *data = [results dataForColumn:@"experts"];
NSMutableArray *photoArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
我已尝试过两种数据类型blob&文字,但到目前为止没有运气,有人可以指导我怎么做吗?
答案 0 :(得分:15)
以下是使用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
构建查询[以下是您不应使用的代码]:感谢@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"]];
希望这将有助于有需要的人和初学者:)
答案 1 :(得分:6)
不要使用stringWithFormat:
构建查询。出于几个原因,这是个坏主意。
使用executeQuery
方法,为每个要为查询绑定的值设置?
。
这样的事情:
[database executeQuery:@"insert into save_article values (?,?,?,?,?,?)", model.Id, model.title, model.earliestKnownDate, data, model.excerpt,model.image_url];