数据库操作工具类

来源:互联网 发布:在淘宝不给退货怎么办 编辑:程序博客网 时间:2024/05/18 00:31
- (void)openDB{    //加载模型数据文件---即在工程中创建的.xcdatamodeld文件,但在实际的路径中,以momd为后缀    NSURL *url = [[NSBundle mainBundle] URLForResource:@"Evaluate" withExtension:@"momd"];        //创建MOM    NSManagedObjectModel *mom = [[NSManagedObjectModel alloc] initWithContentsOfURL:url];        //创建PSC    NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:mom];        //为PSC指定操作的数据库    //获取路径    NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Evaluate.sqlite"];    NSLog(@"%@",filePath);    //转化为url    NSURL *dbUrl = [NSURL fileURLWithPath:filePath];        NSError *error = nil;    //执行打开数据库操作    [psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:dbUrl options:nil error:&error];        if (error) {        NSLog(@"打开数据库失败");    }else{        NSLog(@"打开数据库成功");    }        //创建数据库操作对象    self.context = [[NSManagedObjectContext alloc] init];    self.context.persistentStoreCoordinator = psc;}#pragma mark--创建MO对象- (NSManagedObject *)createMO:(NSString *)entityName{    if (entityName.length == 0) {        return nil;    }    //根据传的实体名创建MO对象--》self.context必须在打开数据库时初始化    NSManagedObject *mo = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:self.context];    return mo;}#pragma mark--1.添加对象- (void)saveObject:(NSManagedObject *)mo{    [self.context insertObject:mo];    NSError *error = nil;    if ([self.context save:&error]) {        NSLog(@"保存成功");    }else{        NSLog(@"保存%@失败:%@",mo, error);    }}#pragma mark--2.删除数据- (void)delegateObject:(NSManagedObject *)mo{    if (!mo) {        return;    }        [self.context deleteObject:mo];        NSError *error = nil;    if ([self.context save:&error]) {        NSLog(@"删除成功");    }else{        NSLog(@"删除%@失败",mo);    }    }#pragma mark--3.更改数据- (void)updateObject:(NSManagedObject *)mo{        if (!mo) {        return;    }        NSError *error = nil;    if ([self.context save:&error]) {        NSLog(@"更改成功");    }else{        NSLog(@"更改%@失败",mo);    }}#pragma mark--4.查询数据(同步线程)- (NSArray *)executeWithEntityName:(NSString *)entityName Predicate:(NSPredicate *)predicate{    if (entityName.length == 0) {        return nil;    }        //创建查询操作对象    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];        //定义排序字段--按某个字段是否升序    NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"id" ascending:YES];    request.sortDescriptors = @[sortDesc];        //设置分页查询    //    int page = 0;    //    [request setFetchLimit:5];//设置每次查询的结果数量    //    [request setFetchOffset:page * 5];//设置查询开始的位置        //定义查询条件    request.predicate = predicate;        //执行查询操作    NSArray *resultArr = [self.context executeFetchRequest:request error:nil];        return resultArr;}

0 0
原创粉丝点击