IOS 数据库底层封装和Block回调

来源:互联网 发布:婚纱摄影后期软件 编辑:程序博客网 时间:2024/05/08 09:39

生成单例包含查询和操作(添加,删除,修改)

@interface DataBaseModel(){    dispatch_queue_t serialqueue;}@property(nonatomic)sqlite3 *database;@property(nonatomic,strong)NSString *dataPath;@end@implementation DataBaseModelstatic NSString *myPath;static DataBaseModel *s_instance;-(instancetype)init{    NSArray *array=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *path=[array objectAtIndex:0];    path=[path stringByAppendingPathComponent:@"xixi_db.sqlite"];    self.dataPath = path;    serialqueue = dispatch_queue_create("seral", DISPATCH_QUEUE_SERIAL);    int result=sqlite3_open([_dataPath UTF8String],&_database);    if (result == SQLITE_OK) {//        DLog(@"打开数据库");    }else{//        DLog(@"打开数据库失败");    }    return self;}+(instancetype)sharedinstance{    @synchronized (self) {        if (!s_instance) {            s_instance = [[DataBaseModel alloc]init];        }    }    return s_instance;}//查询-(void)searchDataFromExeSql:(NSString *)exesql DataHandle:(void (^)(sqlite3_stmt *))datahandle IoCompleteHandle:(void (^)(BOOL))completeIoHandle{    dispatch_async(serialqueue, ^{            //打开数据库成功            sqlite3_stmt *stmt = nil;            int result = sqlite3_prepare_v2(_database, [exesql UTF8String], -1, &stmt, NULL);            if (result == SQLITE_OK) {                while (sqlite3_step(stmt)==SQLITE_ROW) {                        datahandle(stmt);                }                completeIoHandle(YES);                sqlite3_finalize(stmt);            }else{                completeIoHandle(NO);                sqlite3_finalize(stmt);            }    });}//执行sql-(void)exeSql:(NSString *)sql completeHandle:(void(^)(BOOL isExeOk))complete{    dispatch_async(serialqueue, ^{        char *error;        int  result1 = sqlite3_exec(_database, sql.UTF8String, NULL, NULL, &error);        if (result1==SQLITE_OK) {            complete(YES);        }else{            complete(NO);//            DLog(@"操作失败%s",error);        }    });}@end
0 0
原创粉丝点击