DAM*_*108 7 sqlite fmdb ios ios7
如何保存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];
Run Code Online (Sandbox Code Playgroud)
对于Retriving
while([results next]) {
NSData *data = [results dataForColumn:@"experts"];
NSMutableArray *photoArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
Run Code Online (Sandbox Code Playgroud)
我已尝试过两种数据类型blob和文本但到目前为止没有运气,有人可以指导我怎么做吗?
DAM*_*108 15
以下是NSData使用FMDB 插入Sqlite 时可能遇到同样问题的所有人的代码段.
在我的情况下我想存储NSArray在Sqlite所以我首先转换NSArray成NSData然后存储它Sqlite.
将NSArray转换为NSData
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:YourNSarray];;
Run Code Online (Sandbox Code Playgroud)
将NSData保存到Sqlite中
[database executeQuery:@"insert into save_article values (?,?,?,?,?,?)", model.Id, model.title, model.earliestKnownDate, data, model.excerpt,model.image_url];
Run Code Online (Sandbox Code Playgroud)
注意: -不要使用stringWithFormat[下面是不应该使用的代码] 构建查询:感谢@rmaddy和@hotlicks指点我这个:)
NSString *query = [NSString stringWithFormat:@"insert into user values ('%@', %d)",
@"brandontreb", 25];
[database executeUpdate:query];
Run Code Online (Sandbox Code Playgroud)
现在是最后一步,即将NSData检索回NSArray
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:[database dataForColumn:@"yourcololumname"]];
Run Code Online (Sandbox Code Playgroud)
希望这将有助于有需要的人和初学者:)
不要使用构建查询stringWithFormat:.出于几个原因,这是一个坏主意.
使用executeQuery您?为查询绑定每个值的方法.
像这样的东西:
[database executeQuery:@"insert into save_article values (?,?,?,?,?,?)", model.Id, model.title, model.earliestKnownDate, data, model.excerpt,model.image_url];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10008 次 |
| 最近记录: |