// // IfishDatabaseManager.m // Ifish // // Created by imac on 15/12/23. // Copyright © 2015年 imac. All rights reserved. // #import "IfishDatabaseManager.h" #import "FMDatabase.h" #import "IfishDBHelper.h" #import "PushmessageModel.h" #import "IfishInformations.h" @implementation IfishDatabaseManager { FMDatabase *_dataBase; } static NSString * const userTableName = @"USERTABLE"; static NSString * const deviceTableName = @"DEVICETABLE"; static NSString * const venderTableName = @"VENDERTABLE"; static NSString * const shopTableName = @"SHOPTABLE"; static NSString * const PushMassgeTableName = @"PUSHTABLE"; static NSString * const InformationsTableName = @"INFORMATIONSTABLE"; + (instancetype)sharedManager{ static IfishDatabaseManager *manager = nil; @synchronized(self) { if (manager == nil) { manager = [[IfishDatabaseManager alloc] init]; [manager creatTable]; } } return manager; } /*-(id)init{ //使用base // 获取沙盒路径,因为数据库文件要存储在沙盒中 // 找到沙盒下面的Docuemnts文件夹路径,相当于 [NSHomeDirectory() stringByAppendingPathComponents:@"Document"] if (self=[super init]) { NSString*documentPath=[NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0]; // 在沙盒中指定数据库文件路径 NSString*dbPath=[documentPath stringByAppendingString:@"IfishDBM.db"]; // 新建FMDB对象并调用initWithPath关联数据库文件 _dataBase=[[FMDatabase alloc]initWithPath:dbPath]; // 打开数据库创建表格 打开数据库文件,如果这个文件(dbPath)原来是存在的, 则直接打开,不会破坏原来的内容 // 如果不存在,则自动创建一个空的数据库文件 //用户 设备 厂家 商家 未完成!!! } return self; }*/ -(void)creatTable{ FMDatabaseQueue *queue = [IfishDBHelper getDatabaseQueue]; if (queue==nil) { return; } [queue inDatabase:^(FMDatabase *db) { //要创建的表 if (![IfishDBHelper isTableOK:userTableName withDB:db]) { } if (![IfishDBHelper isTableOK: deviceTableName withDB:db]) { } if (![IfishDBHelper isTableOK: venderTableName withDB:db]) { } if (![IfishDBHelper isTableOK: shopTableName withDB:db]) { } if (![IfishDBHelper isTableOK: PushMassgeTableName withDB:db]){ if ([db open]) { NSString*sql=@"create table if not exists pushtable(serial integer Primary Key Autoincrement,massageType Varchar(1024),massageBody Varchar(1024),massageTitle Varchar(1024),createTime Varchar(1024),deviceId Varchar(1024),showName Varchar(1024),userId Varchar(1024))"; if ([db executeUpdate:sql]) { NSLog(@"成功创建表格 pushMassageInfo"); }else{ NSLog(@"creatTable error:%@",db.lastErrorMessage); } } } if (![IfishDBHelper isTableOK: InformationsTableName withDB:db]) { if ([db open]) { NSString*sql=@"create table if not exists informationstable(serial integer Primary Key Autoincrement,clickNum Varchar(1024),pinglunNum Varchar(1024),contents Varchar(1024),image Varchar(1024),infoId Varchar(1024),link Varchar(1024),title Varchar(1024))"; if ([db executeUpdate:sql]) { NSLog(@"成功创建表格 InformationsInfo"); }else{ NSLog(@"creatTable error:%@",db.lastErrorMessage); } } } }]; } /*-(void)insertModel:(id)model{ //使用单个base if ([_dataBase open]) { PushmassageModel*massagemodel=(PushmassageModel*)model; NSString *sql=@"insert into pushtable (massageType,massageTitle,massageBody,createTime,deviceId,showName,userId) values(?,?,?,?,?,?,?)"; BOOL isSccess=[_dataBase executeUpdate:sql,massagemodel.massageType,massagemodel.massageTitle,massagemodel.massageBody,massagemodel.createTime,massagemodel.deviceId,massagemodel.showName,massagemodel.userId]; if (!isSccess) { NSLog(@"insert error:%@",_dataBase.lastErrorMessage); } }; [_dataBase close]; }*/ //使用baseQueue -(void)insertModel:(id)model{ NSString *sql=@"insert into pushtable (massageType,massageTitle,massageBody,createTime,deviceId,showName,userId) values(?,?,?,?,?,?,?)"; FMDatabaseQueue *queue = [IfishDBHelper getDatabaseQueue]; [queue inDatabase:^(FMDatabase *db) { //必须为对象类型 PushmessageModel*massagemodel=(PushmessageModel*)model; BOOL isSccess = [db executeUpdate:sql,massagemodel.pushType,massagemodel.pushTitle,massagemodel.pushContext,massagemodel.createTime,massagemodel.deviceId,massagemodel.showName,massagemodel.userId]; if (!isSccess) { NSLog(@"insert error:%@",db.lastErrorMessage); } }]; } -(void)deleteModel:(id)model{ NSString *sql=@"delete from pushtable where massageType=? and massageTitle=?"; FMDatabaseQueue *queue = [IfishDBHelper getDatabaseQueue]; [queue inDatabase:^(FMDatabase *db) { //必须为对象类型 PushmessageModel*massagemodel=(PushmessageModel*)model; BOOL isSccess = [db executeUpdate:sql,massagemodel.pushType,massagemodel.pushTitle]; if (!isSccess) { NSLog(@"delete error:%@",db.lastErrorMessage); } }]; } -(NSArray*)readModel{ NSMutableArray *arr=[[NSMutableArray alloc] init]; FMDatabaseQueue *queue = [IfishDBHelper getDatabaseQueue]; [queue inDatabase:^(FMDatabase *db) { NSString *sql=@"SELECT * FROM pushtable"; FMResultSet*rs=[db executeQuery:sql]; while ([rs next]) { PushmessageModel*massagemodel=[[PushmessageModel alloc] init]; massagemodel.pushType=[rs stringForColumn:@"pushType"]; massagemodel.pushTitle=[rs stringForColumn:@"pushTitle"]; massagemodel.pushContext=[rs stringForColumn:@"pushContext"]; massagemodel.createTime =[rs stringForColumn:@"createTime"]; massagemodel.deviceId = [rs stringForColumn:@"deviceId"]; massagemodel.showName = [rs stringForColumn:@"showName"]; massagemodel.userId =[rs stringForColumn:@"userId"]; //[arr insertObject:massagemodel atIndex:0]; [arr addObject:massagemodel]; } }]; return arr; } -(void)insertIfishInformations:(IfishInformations*)model { NSString *sql=@"insert into informationstable(clickNum,pinglunNum,contents,image,infoId,link,title) values(?,?,?,?,?,?,?)"; FMDatabaseQueue *queue = [IfishDBHelper getDatabaseQueue]; [queue inDatabase:^(FMDatabase *db) { //必须为对象类型 BOOL isSccess = [db executeUpdate:sql,[NSNumber numberWithInt:model.clickNum],[NSNumber numberWithInt:model.pinglunNum],model.contents,model.image,[NSNumber numberWithInt:model.infoId],model.link,model.title]; if (!isSccess) { NSLog(@"insert error:%@",db.lastErrorMessage); } }]; } -(NSMutableArray*)readInformations{ NSMutableArray *arr=[[NSMutableArray alloc] init]; FMDatabaseQueue *queue = [IfishDBHelper getDatabaseQueue]; [queue inDatabase:^(FMDatabase *db) { NSString *sql=@"SELECT * FROM informationstable"; FMResultSet*rs=[db executeQuery:sql]; while ([rs next]) { IfishInformations*model=[[IfishInformations alloc] init]; model.clickNum=[rs intForColumn:@"clickNum"]; model.pinglunNum=[rs intForColumn:@"pinglunNum"]; model.contents=[rs stringForColumn:@"contents"]; model.image =[rs stringForColumn:@"image"]; model.infoId = [rs intForColumn:@"infoId"]; model.link = [rs stringForColumn:@"link"]; model.title =[rs stringForColumn:@"title"]; [arr addObject:model]; } }]; return arr; } @end