问题
How can I save NSData
into sqlite, I am using FMDB wrapper for saving data.
Below is the code which I have tried so far
For saving
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];
For Retriving
while([results next]) {
NSData *data = [results dataForColumn:@"experts"];
NSMutableArray *photoArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
}
I have tried both datatype blob & text but no luck so far, can anybody guide me how to do it?
回答1:
Below is the Snippet for all who may face the same issue while inserting NSData
to Sqlite using FMDB.
In my Case I wanted to store NSArray
in Sqlite
So i first convert the NSArray
into NSData
& then store it in Sqlite
.
Converting NSArray into NSData
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:YourNSarray];;
Saving NSData into Sqlite
[database executeQuery:@"insert into save_article values (?,?,?,?,?,?)", model.Id, model.title, model.earliestKnownDate, data, model.excerpt,model.image_url];
Note:- Don't build a query using stringWithFormat
[below is the code which you should not use]:. Thanks to @rmaddy & @hotlicks for pointing me to this :)
NSString *query = [NSString stringWithFormat:@"insert into user values ('%@', %d)",
@"brandontreb", 25];
[database executeUpdate:query];
and now the last step i.e retrieving NSData back to NSArray
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:[database dataForColumn:@"yourcololumname"]];
Hope this will help the needy & beginner :)
回答2:
Don't build a query using stringWithFormat:
. This is a bad idea for several reasons.
Use the executeQuery
method where you put a ?
for each value to be bound to the query.
Something like this:
[database executeQuery:@"insert into save_article values (?,?,?,?,?,?)", model.Id, model.title, model.earliestKnownDate, data, model.excerpt,model.image_url];
来源:https://stackoverflow.com/questions/22234237/how-to-save-retrieve-nsdata-into-sqlite-through-fmdb