iOS-基于FMDB的操作封装,模型对象的增删改查
2017-10-10 10:37
423 查看
前言
写这篇博文主要是为了介绍自己项目中自己写的数据库操作管理类,感觉很好用;我们可以对APP的一些用户信息,比如QQ的用户列表进行缓存;还有一些列表数据进行缓存,比如今日头条的列表数据缓存,从而达到用户体验上的优化,具体策略看大家APP的需求吧!ZFJSqliteOperation是基于FMDB的一个操作管理类,主要对封装了一些常用的方法,比如:创建表、删除表、请空表和对表的增删改查的一些基本操作!这样做主要是给一些对数据库sql语言不熟悉的小伙伴使用,仅供参考!
功能
1.创建表
/**创建表
@param tableName 表名
@param fieldNameModel 存放表字段的数据模型
@return 是否创建成功
*/
- (BOOL)createTableWithtableName:(NSString *)tableName fieldNameModel:(NSObject *)fieldNameModel;使用示例:
BOOL isScu = [[ZFJSqliteOperation shareOperation] createTableWithtableName:ZFJDetailTable fieldNameModel:[DetailModel new]];
if(isScu){
NSLog(@"创建成功");
}
使用说明:
fieldNameModel传的是你的数据模型对象,然后会根据数据模型的属性进行穿件表结构。
2.删除表
/**根据表名删除表
@param tableName 表名
@return 是否删除成功
*/
- (BOOL)delectTableWithtableName:(NSString *)tableName;
使用示例:
BOOL isScu = [[ZFJSqliteOperation shareOperation] delectTableWithtableName:ZFJDetailTable];
if(isScu){
NSLog(@"删除成功");
}
3.清空表
/** 根据表名清空表 @param tableName 表名 @return 是否删除成功 */ - (BOOL)cleanTableWithtableName:(NSString *)tableName;
设个和上面两个方法一样,直接传表名就OK了。
4.数据插入
单条插入/**
根据数据模型插入一条数据
@param tableName 表名
@param model 数据模型
@param completed 操作结果(YES:成功||NO:失败,错误信息提示)
*/
- (void)insertDataBaseWithtableName:(NSString *)tableName model:(NSObject *)model completed:(void(^)(BOOL isScu,NSString *meg))completed;使用示例
[[ZFJSqliteOperation shareOperation] insertDataBaseWithtableName:ZFJDetailTable model:model.detailModel completed:^(BOOL isScu, NSString *meg) { if(isScu){ NSLog(@"插入成功"); }else{ NSLog(@"meg == %@",meg); } }];
使用说明:
插入的模型字段要和表结构字段一致,不然会插入失败!
多条插入
/**
根据数据模型数组插入多条数据
@param tableName 表名
@param modelArr 数据模型数组
@param completed 操作结果(失败的对象数组集合)
*/
- (void)insertsDataBaseWithtableName:(NSString *)tableName modelArr:(NSArray *)modelArr completed:(void(^)(NSArray *failArr))completed;这里面传的是数据模型的数据就OK了;
5.删除数据
根据字段删除/**
根据表的一个字段和一个值删除一条数据
@param tableName 表名
@param fieldName 表的字段名
@param fieldNameValue 表的字段名所对应的值
@param completed 操作结果(YES:成功||NO:失败,错误信息提示)
*/
- (void)delectDataBaseWithtableName:(NSString *)tableName fieldName:(NSString *)fieldName fieldNameValue:(NSString *)fieldNameValue completed:(void(^)(BOOL isScu,NSString *meg))completed;
使用示例
[[ZFJSqliteOperation shareOperation] delectDataBaseWithtableName:KTableName fieldName:@"userNO" fieldNameValue:@"116" completed:^(BOOL isScu, NSString *meg) {
if(isScu){
NSLog(@"删除成功");
}else{
NSLog(@"meg == %@",meg);
}
}];使用说明
删除userID是116的数据;注意fieldName的值要和表结构的字段相对应。
多条件删除
/**
根据条件删除多条数据
@param tableName 表名
@param parameter 键值对查询条件
@param selectType 键值对查询条件的关系(and \\ or)
@param completed 操作结果(查询结果,错误信息提示)
*/
- (void)delectDataBaseWithtableName:(NSString *)tableName byParameter:(NSDictionary *)parameter selectType:(SelectType)selectType completed:(void(^)(BOOL isScu,NSString *meg))completed;
使用示例
NSDictionary *dict = @{@"userNO":@"486",@"age":@"3"};
[[ZFJSqliteOperation shareOperation] delectDataBaseWithtableName:KTableName byParameter:dict selectType:KAndType completed:^(BOOL isScu, NSString *meg) {
if(isScu){
NSLog(@"删除成功");
}else{
NSLog(@"meg == %@",meg);
}
}];使用说明
byParameter是多条件的键值对,我这里面删除的是userID是486的并且age是3的用户;selectType是个枚举,你来选择是or关系还是and关系。
自己写删除条件语句
/**
自己写条件删除
@param tableName 表名
@param sqlStr 键值对查询条件(例如:name = '张福杰' and sex = '保密')
@param completed 操作结果(查询结果,错误信息提示)
*/
- (void)delectDataBaseWithtableName:(NSString *)tableName sqlStr:(NSString *)sqlStr completed:(void(^)(BOOL isScu,NSString *meg))completed;使用示例
NSString *sqlStr = @"name = '张福杰' and sex = '保密'";
[[ZFJSqliteOperation shareOperation] delectDataBaseWithtableName:KTableName sqlStr:sqlStr completed:^(BOOL isScu, NSString *meg) {
if(isScu){
NSLog(@"删除成功");
}else{
NSLog(@"meg == %@",meg);
}
}];
6.数据更新
更新一条数据/**
根据表的一个字段更新一条数据
@param tableName 表名
@param fieldName 表的字段名
@param model 需要更新的所以字段
@param completed 操作结果(YES:成功||NO:失败,错误信息提示)
*/
- (void)updataTableWithtableName:(NSString *)tableName fieldName:(NSString *)fieldName model:(NSObject *)model completed:(void(^)(BOOL isScu,NSString *meg))completed;使用示例
[[ZFJSqliteOperation shareOperation] updataTableWithtableName:KTableName fieldName:@"userID" model:model completed:^(BOOL isScu, NSString *meg) {
if(isScu){
NSLog(@"更新成功");
}else{
NSLog(@"meg == %@",meg);
}
}];更新多条数据
/**
根据表的一个字段更新多条数据
@param tableName 表名
@param fieldName 表的字段名
@param modelArr 需要更新的所以字段数组
@param completed 操作结果(更新失败的数组,错误信息提示)
*/
- (void)updataTableWithtableName:(NSString *)tableName fieldName:(NSString *)fieldName modelArr:(NSArray *)modelArr completed:(void(^)(NSArray *failArr,NSString *meg))completed;使用示例
[[ZFJSqliteOperation shareOperation] updataTableWithtableName:KTableName fieldName:@"userID" modelArr:modelArr completed:^(NSArray *failArr, NSString *meg) {
if(failArr.count == 0){
NSLog(@"更新成功");
}else{
NSLog(@"meg == %@",meg);
}
}];
7.数据查询
查询全部/**
查询表里面的全部数据
@param tableName 表名
@param completed 操作结果(查询结果,错误信息提示)
*/
- (void)selectAllDataBaseWithtableName:(NSString *)tableName completed:(void(^)(NSArray *resultArr,NSString *meg))completed;使用方法和上面的更新差不多,这里就不举例了。
根据条件查询
/**
根据参数条件查询
@param tableName 表名
@param parameter 键值对查询条件
@param selectType 键值对查询条件的关系(and \\ or)
@param completed 操作结果(查询结果,错误信息提示)
*/
- (void)selectAllDataBaseWithtableName:(NSString *)tableName byParameter:(NSDictionary *)parameter selectType:(SelectType)selectType completed:(void(^)(NSArray *resultArr,NSString *meg))completed;
这里的使用方法和删除差不多;
自己写查询条件
/**
自己写条件查询语句
@param tableName 表名
@param sqlStr 条件查询语句(例如:name = '张福杰' and sex = '保密')
@param completed 操作结果(查询结果,错误信息提示)
*/
- (void)selectAllDataBaseWithtableName:(NSString *)tableName sqlStr:(NSString *)sqlStr completed:(void(^)(NSArray *resultArr,NSString *meg))completed;
8.表新增字段
/**给表添加新的字段
@param tableName 表名
@param propertyName 新的字段
@param completed 操作结果(YES:成功||NO:失败,错误信息提示)
*/
- (void)addNewPropertyWithtableName:(NSString *)tableName propertyName:(NSString *)propertyName completed:(void(^)(BOOL isScu,NSString *meg))completed;使用示例
新增ZFJNewType的字段
[[ZFJSqliteOperation shareOperation] addNewPropertyWithtableName:ZFJDetailTable propertyName:@"ZFJNewType" completed:^(BOOL isScu, NSString *meg) {
if(isScu){
NSLog(@"新增成功");
}else{
NSLog(@"meg == %@",meg);
}
}];
操作以后
代码下载
点击下载:http://download.csdn.net/download/u014220518/10013534相关文章推荐
- iOS sqlite 增删改查 简单封装(基于 FMDB)
- IOS使用FMDB封装的数据库增删改查操作
- iOS sqlite 增删改查 简单封装(基于 FMDB)
- IOS 之使用FMDB进行SQLite数据库操作——表的创建与修改,以及数据的增删改查和多线程操作数据库
- iOS开发·必会的算法操作:字符串数组排序+模型对象数组排序
- 基于Java对象的数据库增删改查操作
- iOS- Swift:使用FMDB进行数据库操作(线程安全:增删改查)
- iOS:LKDBHelper实体对象映射数据库-第三方框架(在FMDB的基础上进行二次封装)
- 基于 iOS SQLite 增删改查基本方法的封装---通用式数据库访问类
- 自定义封装简单的基于FMDB以及数据model的数据库操作
- CSV和集合对象基于Annotation操作封装
- dao层各种增删改查封装成对象方法 以student表 操作
- iOS 基于FMDB简单的查询操作
- QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData
- 简单封装sqlite3 实现实体对象与关系型数据库的相关操作【IOS】
- iOS的数据库相关操作(基于fmdb)
- IOS 之使用FMDB进行SQLite数据库操作——表的创建与修改,以及数据的增删改查和多线程操作数据库
- IOS-20-数据库操作之(SQLite第三方封装库FMDB)的基础入门使用及demo源码
- spring入门之spring与hibernate整合完成增删改查的操作(封装HibernateTemplate模版类对象)
- PHP实现基于面向对象的mysqli扩展库增删改查操作工具类