+(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;