为了避免各种类型的反复解析,可以将很多图像、数组、Byte 等转换为NSDate 再保存到blob 类型。
例1: NSData 、Byte 数组(指针)用FMDB 保存到SQLite 的blob
1、数据源
...................
Byte *msgbyte =malloc(sizeof(Byte*)*(48)) ;
//Byte[64].....
NSData *btData = [[NSDataalloc] initWithBytes:msgbytelength:length];
2、表
CREATE TABLE maininfo (
...
message_ blob
);
3. Model
@interface ParameterSet : NSObject
@property (nonatomic,copy)NSData* message;
4. DAO保存
+ (void)insertPS: (ParameterSet *) ps{
if ([shareDataBaseopen]) {
[shareDataBaseexecuteUpdate:
@"INSERT INTO maininfo (time_stamp,message_) VALUES(?,?)",ps.time_stamp,ps.message];
5. DAO 查询
ParameterSet *ps = [[ParameterSetalloc]init];
if ([shareDataBaseopen]) {
FMResultSet *s = [shareDataBaseexecuteQuery:[NSStringstringWithFormat:@"SELECT * FROM maininfo WHERE sys_no = '%@' and id_ = '%ld'",sysNo,(long)psId]];
if ([snext]) {
ps.ID = [s intForColumn:@"id_"];
ps.message = [s dataForColumn:@"message_"];
例2:NSArray用FMDB 保存到SQLite 的blob
1. NSArray 转为 NSData
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:NSarray];
2. 保存NSData到SQLite blob
[database executeQuery:@"insert into save_article values (?,?)", model.Id, data
3.NSData转为NSArray
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:[database dataForColumn:@"yourcololumname"]];