iOS 数据库工具类分享-阿里云开发者社区

开发者社区> 幸运券发放> 正文

iOS 数据库工具类分享

简介: iOS 数据库工具类分享 基于 对 FMDB 框架的封装,实现通过模型操作数据库的功能,不需要手写SQL语句,只要传入一个Model,框架会自动将Model内数据保存到指定数据库中, 并且会自动创建数据库,自动创建模型对应的表。
+关注继续查看

iOS 数据库工具类分享

基于 对 FMDB 框架的封装,实现通过模型操作数据库的功能,不需要手写SQL语句,只要传入一个Model,框架会自动将Model内数据保存到指定数据库中, 并且会自动创建数据库,自动创建模型对应的表。

项目地址

XWSqliteTool

功能列表

  1. 根据 Model 动态建表
  2. 若 Model 内字段发生变化自动进行表结构迁移
  3. 传入 Model 自动将 Model 内数据保存到数据库对应的表中
  4. 传入主键值获取 Model 模型数据
  5. 大数据保存,传入多个数据模型批量存储
  6. 多线程支持,多线程操作数据库需要使用 操作队列 进行操作。

使用说明

  1. 导入 XWSqliteTool
  2. 使需要操作的模型遵循 XWXModelProtocol 协议,并实现 +(NSString *)primaryKey 协议方法指定表的主键。

1. 动态建表

//根据模型建表
- (void)testCreateTableFromClass {
    [XWSqliteModelFMDBTool createTableFromClass:[XWPerson class] callBack:^(BOOL isSuccess) {
        XCTAssertTrue(isSuccess);
    }];
}

2. 模型字段改变自动进行表数据迁移

// 模型字段增加更新数据库
- (void)testUpdateModelTable {
    [XWSqliteModelFMDBTool updateTableFromCls:[XWPerson class] updateSqls:nil callBack:^(BOOL isSuccess) {
        XCTAssert(isSuccess == 1);
    }];
}

3. 自动保存一个Model到数据库 (自动创建数据库,自动建表)

// 插入/更新 单条数据模型
- (void)testInsertOneObj {
    [XWSqliteModelFMDBTool insertOrUpdateDataToSQLiteWithModel:[self demoPerson] isUpdateTable:YES callBack:^(BOOL isSuccess) {
        XCTAssertTrue(isSuccess);
    }];
}

4. 自动保存 Model 数组到数据库 (自动创建数据库,自动建表)

// 插入/更新 多条数据模型
- (void)testInsertObjs {
    [XWSqliteModelFMDBTool insertOrUpdateDataToSQLiteWithModels:[self demoPersons] isUpdateTable:YES callBack:^(BOOL isSuccess) {
        XCTAssertTrue(isSuccess);
    }];
}

5.传入主键值获取 Model 模型数据

// 查询 XWPerson 表中 主键 为 4 的模型
- (void)testQuery {
    [XWSqliteModelFMDBTool objectFromDatabaseWithPrimaryValue:4 modelCls:[XWPerson class] resultCallBack:^(XWPerson *obj) {
        NSLog(@"name:%@",obj.name);
    }];
}

6.多线程操作数据库

首先如果项目中需要多线程异步操作数据库,需要将对数据库操作集中管理,使用 dispatch_queue_t 进行统一管理。 例如Demo所示:

//
//  ViewController.m
//  XWSqliteToolDemo
//
//  Created by 邱学伟 on 2018/4/8.
//  Copyright © 2018年 邱学伟. All rights reserved.
//

#import "ViewController.h"
#import "XWSqliteModelFMDBTool.h"
#import "XWPerson.h"
@interface ViewController ()
@property (nonatomic, strong) dispatch_queue_t databaseQueue;
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    self.databaseQueue = dispatch_queue_create("com.company.app.database", 0);

    for (int i = 0; i < 1000; i++) {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            XWPerson *stu = [[XWPerson alloc] init];
            stu.name = [NSString stringWithFormat:@"极客学伟_%d",i];
            stu.sex = 1;
            stu.uid = [NSString stringWithFormat:@"%d",i];
            stu.height = 188;
            stu.address = @"北京回龙观";
            dispatch_sync(self.databaseQueue, ^{
                // do your database activity here
                [XWSqliteModelFMDBTool insertOrUpdateDataToSQLiteWithModel:stu isUpdateTable:YES callBack:^(BOOL isSuccess) {
                    NSLog(@"保存成功 %@, 线程 %@",stu.name,[NSThread currentThread]);
                }];
            });
        });
    }
}
@end
原文地址https://blog.csdn.net/qiuxuewei2012/article/details/80282784

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用iOS原生sqlite3框架对sqlite数据库进行操作(二)
使用iOS原生sqlite3框架对sqlite数据库进行操作
18 0
FAQ系列 | 是什么导致MySQL数据库服务器磁盘I/O高?
FAQ系列 | 是什么导致MySQL数据库服务器磁盘I/O高?
4 0
使用iOS原生sqlite3框架对sqlite数据库进行操作(五)
使用iOS原生sqlite3框架对sqlite数据库进行操作
16 0
使用iOS原生sqlite3框架对sqlite数据库进行操作(一)
使用iOS原生sqlite3框架对sqlite数据库进行操作
16 0
IDA反汇编/反编译静态分析iOS模拟器程序(二)加载文件与保存数据库
启动windows版的IDA,在Quickstart界面点击New,弹出一个对话框选择文件。也可以按取消后再把文件拖进IDA。由于Mac版的IDA没注册,没有save功能,所以只好先把Mac上的东西拷贝到windows再打开了。
1018 0
首次曝光 | 阿里数万名开发者都在使用的数据库开发工具到底长什么样?
数据管理DMS(Data Management Service)是阿里巴巴自研图形化的数据库开发工具,已服务阿里巴巴及阿里云上几十万开发者实现安全便捷的数据库访问开发工作。用户可以通过DMS实现25种常见数据库的访问研发。
866 0
首次曝光 | 阿里数万名开发者都在使用的数据库开发工具到底长什么样?
数据管理DMS(Data Management Service)是阿里巴巴自研图形化的数据库开发工具,已服务阿里巴巴及阿里云上几十万开发者实现安全便捷的数据库访问开发工作。用户可以通过DMS实现25种常见数据库的访问研发。
1322 0
+关注
幸运券发放
阿里云代金码bieryun.com
303
文章
3
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载