IOS NSData/NSArray数组存储为SQLite blob

来源:互联网 发布:建筑设计优化职责 编辑:程序博客网 时间:2024/05/21 11:33

为了避免各种类型的反复解析,可以将很多图像、数组、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"]];






0 0
原创粉丝点击