iOS - JRDB - 基于sqlite3的通用数据库封装

JRDB是针对sqlite3的高效数据库封装,提供了简单易用的API,无需针对不同数据模型进行二次封装。主要特性包括:创建表单、插入数据、删除数据、更新数据和查询数据等操作。使用该库,开发者只需传入数据模型的类即可完成各种数据库操作。项目源码可在GitHub上找到。
摘要由CSDN通过智能技术生成

JRDB - 基于sqlite3的通用数据库封装

  • 说明:
    • 本文介绍JRDB的相关用法以及简单的实现原理。
    • Categories:
      • JRDataBaseManager (CreateDataBaseTable)
      • JRDataBaseManager (OperationSQLiteTable)
  • 此文章由 @JR_Rafael 编写. 若转载此文章,请注明出处和作者

注意事项:此类需要将Build Setting下 Enable Strict Checking of objc_msgSend Calls 改为No,才可以正常使用。

开发者说明:

JRDB对于sqlite3的封装与其他类对于数据库的封装不同,其中最主要的区别就是开发者在使用此类时不需要再次封装来适应不同的数据模型。现有的iOS相关数据库封装包括基本的sqlite3都必须要进行二次封装甚至多次封装才能满足程序对于数据库的需求。而在大多数的程序中数据库的表单还有其对表单进行的一些基本操作往往会有多套方法,这就导致了在运用数据库进行操作的时候方法过多,封装冗杂。

此次封装的JRDB可以有效避免此类问题,封装所提供的方法很少,但可以满足一个程序对数据库的一切基本要求。JRDB是一种基于sqlite3的通用数据库方法的封装,他所提供的方法适用于大多数形式的数据模型,开发者仅需要提供数据模型的类就可以进行创建表单,添加表单数据,删除表单数据,删除表单,通过条件修改表单,查询表单数据等操作。方法清晰明了,使用简便,特别适用于轻量级,复杂成度一般的数据库需求。

JRDatabaseManager Define

  • 沙盒路径
#define dataBasePath [[(NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)) lastObject]stringByAppendingPathComponent:dataBaseName]
  • 数据库名称,包括App名称与版本名
#define dataBaseName @"YourAppx.x.x.sqlite"

JRdataBaseManager Property

  • 返回数据库单例属性
  • @property (nonatomic, assign) sqlite3 *db;

JRDataBaseManager Class Methods

Create a sqlite3 DataBase - 创建一个sqlite3的数据库

1 . + (sqlite3 *)shareDataBase;

  • 创建单例数据库

2 . + (void)closeDB;

  • 关闭数据库

3 . + (void)openDB;

  • 开启数据库

JRDataBaseManager Category

CreateDataBaseTable - 创建表单

+ (void) createTableWithModelClass:(Class)modelClass;
  • 创建数据库表单
    • 参数:要建表的数据模型的类

Introduction: 参数一定要用Class类型,创建表单之后控制台输出建表成功与否。

OperationSQLiteTable - 对表单进行操作

+ (BOOL)insertDataWithModel:(id)model;
  • 向数据库表单中插入数据
  • 参数:任意对象类型,可用于任意的数据模型对象插入
  • 返回值:是否插入成功

Introduction: 如果当前表中有相同的数据,一样进行插入操作。

+ (BOOL)deleteTableWithModelClass:(Class)modelClass whereKey:(NSString *)key isValue:(id)value;
  • 从数据库表单中删除数据
  • 参数1:类名,确定从哪个表单中进行删除
  • 参数2:key值,确定所在表单中的key
  • 参数3:value值,确定所在表单中与key值所对应的value值
  • 返回值:是否删除成功

Introduction: 确定表单之后,当key = value时,进行删除数据操作。

+ (BOOL)clearTableWithModelClass:(Class)modelClass;
  • 清除整个表单数据
  • 参数:类名,确定在数据库中清除的表单
  • 返回值:是否清除成功

Introduction: 在清除这个表单之后同样会对其主键包括sqlite_sequence进行清除,以便于下一次插入数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值