您的位置:首页 > 移动开发 > IOS开发

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐