DAMM108 DAMM108 - 2 months ago 35
iOS Question

How to save & retrieve NSdata into sqlite through FMDB

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?

Answer

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 :)

Comments