iOS · WCDB的使用

作者: 爱迪生的小跟班 | 来源:发表于2018-09-20 10:39 被阅读64次

之前开发过的项目涉及到数据库操作都是使用了FMDB或者CoreData,直到最近接触到了使用WCDB的项目。茅舍顿开-数据存储不用再像FMDB那样每个业务都去些SQL语句了。当然CoreData大哥也是。但是WCDB是支持iOS、macOS、Android多平台的移动数据库框架!

WCDB的特性:

· 易用:WCDB支持一句代码即可将数据取出,并且组合成对象
· WINQ(WCDB语言集成查询):通过WINQ,无需再写SQL语句
· ORM(Object Relational Mapping):WCDB支持灵活、易用的ORM,可以便捷的定义表、索引、约束、并进行增删改查操作。
· 高效:性能比FMDB好
· 完整:WCDB满足了数据库相关的各种使用场景

直接上重点,如何使用WCDB?
CocoaPods安装WCDB:

target ‘yourProjectName' do
    platform :ios, ‘8.0'
    pod 'WCDB'
end

(注:WCDB中使用到了C,所以引用它的文件后缀需要把.m改成.mm)

引入头文件:

 #import <WCDB/WCDB.h>

1、创建数据库:

***.h
@interface WCBDManage : NSObject
+(instancetype)sharedManager;
@property (strong,nonatomic) WCTDatabase *dataBase;
@end
***.mm
#define kDataBaseFileName @“myWCDB.sqlite"
+(instancetype)sharedManager{
    static WCBDManage *manager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        manager = [[WCBDManage alloc] init];
    });
    return manager;
    
}
-(instancetype)init{
    self = [super init];
    if (self) {
        [self createDataBase];
    }
    return self;
}
-(void)createDataBase{
    NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *dbPath = [documentPath stringByAppendingString:kDataBaseFileName];
    self.dataBase = [[WCTDatabase alloc] initWithPath:dbPath];
}
@synthesize dataBase = _dataBase;

2、创建model,并映射到数据表中的字段 (需要遵循 WCTTableCoding 协议)

***.h
#import <Foundation/Foundation.h>
#import <WCDB/WCDB.h>
@interface OrderDBTable : NSObject<WCTTableCoding>
@property (assign,nonatomic) NSInteger orderId;
@property (strong,nonatomic) NSString *orderTitle;
@property (strong,nonatomic) NSString *orderDescribe;
@property (assign,nonatomic) float price;
//需要绑定到表的字段在这里声明,在.mm中绑定
WCDB_PROPERTY(orderId)
WCDB_PROPERTY(orderTitle)
WCDB_PROPERTY(orderDescribe)
WCDB_PROPERTY(price)
***.mm
@implementation OrderDBTable
WCDB_IMPLEMENTATION(OrderDBTable)    //该宏实现绑定到表
WCDB_SYNTHESIZE(OrderDBTable, orderId)    //该宏实现绑定到表的字段
WCDB_SYNTHESIZE(OrderDBTable, orderTitle)
WCDB_SYNTHESIZE(OrderDBTable, orderDescribe)
WCDB_SYNTHESIZE(OrderDBTable, price)

// 约束宏定义数据库的主键
WCDB_PRIMARY(OrderDBTable, orderId)
// 定义数据库的索引属性,它直接定义createTime字段为索引
// 同时 WCDB 会将表名 + "_index" 作为该索引的名称
// WCDB_INDEX(OrderDBTable, "_index", createTime)

@end

3、创建表

#define kDataBaseName_orderTable @“kDataBaseName_orderTable"
//创建表
-(void)createOrderTable{
    if (![[LuckyWCBDManage sharedManager].dataBase isTableExists:kDataBaseName_orderTable]) {
        BOOL isCreate = [[LuckyWCBDManage sharedManager].dataBase createTableAndIndexesOfName:kDataBaseName_orderTable withClass:LuckyOrderDBTable.class];
    }
}

4、数据操作

//增加一条数据
+(BOOL)insertObjectWithOrderModel:(OrderDBTable *)model{
    BOOL success = [[WCBDManage sharedManager].dataBase insertObject:model into:kDataBaseName_orderTable];
    return success;
}

//查找某张表中所有数据
+(NSMutableArray *)searchAllData{
    NSMutableArray *resultArr = [[NSMutableArray alloc] initWithCapacity:0];
    WCTTable *table = [[WCBDManage sharedManager].dataBase getTableOfName:kDataBaseName_orderTable withClass:LuckyOrderDBTable.class];
    NSArray<OrderDBTable *> *arr = [table getAllObjects];
    [resultArr addObjectsFromArray:arr];
    return resultArr;
}

相关文章

  • IOS数据存储 之WCDB (二)WCDB.swift使用篇

    @[TOC](IOS数据存储 之WCDB (二)WCDB.swift使用篇) 上一篇:IOS数据存储 之WCDB ...

  • iOS WCDB 使用

    iOS WCDB使用 准备 简介 WCDB 是基于SQLCipher,而SQLCipher 又是基于SQLite....

  • WCDB使用文档

    使用简介iOS 官方使用教程从FMDB迁移到WCDB 基本特性 易用,WCDB支持一句代码即可将数据取出并组合为o...

  • iOS · WCDB的使用

    之前开发过的项目涉及到数据库操作都是使用了FMDB或者CoreData,直到最近接触到了使用WCDB的项目。茅舍顿...

  • WCDB的高级用法学习

    摘自:https://github.com/Tencent/wcdb/wiki/iOS+macOS使用教程 第一部...

  • 一步一步了解WCDB

    你好,WCDB WCDB是一个高效、完整、易用的移动数据库框架,基于SQLCipher,支持iOS, macOS和...

  • WCDB 使用

    1. 安装:使用Cocoapods安装 2. 使用 2.1 实现 WCTTableCoding 协议 类的定义:类...

  • WCDB使用

    Git地址:https://github.com/Tencent/wcdb/wiki/ORM%E4%BD%BF%E...

  • WCDB使用

    WCDB是微信的一个开源数据库框架。 相对于FMDB来说,WCDB更快,而且用了ORM数据-模型绑定,使用更方便,...

  • 使用WCDB对数据存储进行优化

    使用WCDB对数据存储进行优化

网友评论

    本文标题:iOS · WCDB的使用

    本文链接:https://www.haomeiwen.com/subject/meugnftx.html