您的位置:首页 > 数据库

字典数据存入数据库(转换为二进制)

2016-06-23 17:44 357 查看
+(instancetype)defaultManager

{

    static
DataBaseManager *manager =
nil;

    static
dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        manager = [[DataBaseManager
alloc] init];

    });

    return manager;

}

- (instancetype)init

{

    if ([super
init]) {

        _dataBase = [[FMDatabase
alloc] initWithPath:[NSHomeDirectory()
stringByAppendingString:@"/Documents/dynamic.db"]];

        

        [_dataBase
open];

        

        //存储消息

        NSString *msgSql = [NSString
stringWithFormat:@"CREATE TABLE IF NOT EXISTS Message (msgId TEXT PRIMARY KEY NOT NULL ,custId TEXT, msgType TEXT ,subMsgType TEXT, pushBy TEXT ,sendDatetime TEXT, msgTitle
TEXT ,devId TEXT, msgBodyId TEXT ,msgContent TEXT, extraMsg BLOB)"];

        if ([_dataBase
executeUpdate:msgSql]) {

           
    NSLog(@"成功建表");

        }else

        {

            NSLog(@"建表失败");

        }

    }

    return
self;

}

- (void)addMessageRecord:(MessageModel *)model {

    NSString *sql = [NSString
stringWithFormat:@"insert into Message (msgId, custId, msgType, subMsgType, pushBy, sendDatetime, msgTitle, devId, msgBodyId, msgContent, extraMsg) values(?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?)"];

//存储时把字典转换为二进制数据

    NSDictionary *extraMsgDic = (NSDictionary *)model.extraMsg;

    NSData *extraMsgData = [NSJSONSerialization
dataWithJSONObject:extraMsgDic
options:NSJSONWritingPrettyPrinted 
error:nil];

    

    if ([_dataBase
executeUpdate:sql, [NSString
stringWithFormat:@"%@%@", model.msgId,
UserCid], model.custId, model.msgType, model.subMsgType,
model.pushBy, model.sendDatetime, model.msgTitle, model.devId,
model.msgBodyId, model.msgContent, extraMsgData]) {

        NSLog(@"插入成功");

    }else {

        NSLog(@"");

    }

    

}

- (NSArray *)allMessages {

    NSMutableArray *arr = [[NSMutableArray
alloc]
init];

    NSString *sql = [NSString
stringWithFormat:@"select *from Message"];

    

    FMResultSet *set = [_dataBase
executeQuery:sql];

    while (set.next) {

        MessageModel *model = [[MessageModel
alloc] init];

        //这个model的msgid是拼接了用户id的model

        NSMutableString *msgIdAndCid = [[set
stringForColumn:@"msgId"]
mutableCopy];

        model.msgId = [msgIdAndCid
substringToIndex:32];

        

        model.custId = [set
stringForColumn:@"custId"];

        model.msgType = [set
stringForColumn:@"msgType"];

        model.subMsgType = [set
stringForColumn:@"subMsgType"];

        model.pushBy = [set
stringForColumn:@"pushBy"];

        model.sendDatetime = [set
stringForColumn:@"sendDatetime"];

        model.msgTitle= [set
stringForColumn:@"msgTitle"];

        model.devId = [set
stringForColumn:@"devId"];

        model.msgBodyId = [set
stringForColumn:@"msgBodyId"];

        model.msgContent = [set
stringForColumn:@"msgContent"];

       
//把二进制数据转换为字典

        NSData *extraMsgData = [set
dataForColumn:@"extraMsg"];

        NSDictionary *extraMsg = [NSJSONSerialization
JSONObjectWithData:extraMsgData
options:NSJSONReadingMutableContainers 
error:nil];

        model.extraMsg = extraMsg;

        [arr addObject:model];

    }

    

    return arr;

}

- (void)deleteMessageRecord:(MessageModel *)model {

    //通过ID来删除

    NSString *sql =
@"delete from Message where msgId = ?";

    [_dataBase
executeUpdate:sql,[NSString
stringWithFormat:@"%@%@", model.msgId,
UserCid]];

}

@property (nonatomic,copy)
NSString *msgId;

@property (nonatomic,copy)
NSString *custId;

@property (nonatomic,copy)
NSString *msgType;

@property (nonatomic,copy)
NSString *subMsgType;

@property (nonatomic,copy)
NSString *pushBy;

@property (nonatomic,copy)
NSString *sendDatetime;

@property (nonatomic,copy)
NSString *msgTitle;

@property (nonatomic,copy)
NSString *devId;

@property (nonatomic,copy)
NSString *msgBodyId;

@property (nonatomic,copy)
NSString *msgContent;

@property (nonatomic,copy)
NSDictionary *extraMsg;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: