IOS使用fmdb操作数据库的方法详解
2015-10-27 18:35
726 查看
一、导入头文件
1.第三方库的头文件
#import "FMDB.h"
2.导入数据模型的头文件
#import "MainPageModel.h"
二、各种方法
@interface MyFMDBInfo :
NSObject
{
//记录是否打开成功
BOOL _isOpenSuccess;
//创建数据库管理对象
FMDatabase * _dataBase;
}
//打开成功
- (BOOL)open;
//插入一条数据,表示新加入一条收藏
第一个参数表示插入的数据模型 第二个参数是标记
- (void)insertCollectionWithModel:(MainPageModel *)model andRecordType:(NSString
*)type;
//删除一条收藏记录
根据其cellId来删除
- (void)deleteOneCollentionWithCellId:(NSString *)cellId andRecordType:(NSString
*)type;
//判断正在浏览的这一项是否已经被收藏了
- (BOOL)isExistedWithCellId:(NSString *)cellId andRecordType:(NSString *)type;
//获取表中的信息
- (NSArray *)getdataInfoWithRecordType:(NSString *)type;
@end
三、方法的具体实现
@implementation MyFMDBInfo
- (void)dealloc {
//如果打开成功
if (_isOpenSuccess) {
//关闭数据库
[_dataBase
close];
}
}
//在构造方法中实例化数据库管理对象
- (instancetype)init {
if (self = [super
init]) {
//实例化管理对象
_dataBase = [FMDatabase
databaseWithPath:[self
dataBasePath]];
//初始化为没有打开
_isOpenSuccess =
NO;
}
return
self;
}
- (NSString *)dataBasePath {
return [NSString
stringWithFormat:@"%@/Documents/dataBase.rdb",NSHomeDirectory()];
}
#pragma mark - 创建数据库表 -
- (BOOL)open {
_isOpenSuccess = [_dataBase
open];
//如果没有打开数据库,就不用创建数据库表了
if (!_isOpenSuccess) {
return
_isOpenSuccess;
}
//创建一个收藏信息表
NSString * createCollectionInfoTable =
@"create table if not exists collectionInfoTable (id integer primary key,cellId text,title text,pic text,update_time text,url text,recordType)";
BOOL createSuccess = [_dataBase
executeUpdate:createCollectionInfoTable];
//如果创建成功,返回打开成功,如果创建失败,就当打开数据库失败,返回失败
if (!createSuccess) {
[_dataBase
close];
_isOpenSuccess =
NO;
return
_isOpenSuccess;
}
return
_isOpenSuccess;
}
#pragma mark - 对数据库的操作 -
//增加一条收藏
- (void)insertCollectionWithModel:(MainPageModel *)model andRecordType:(NSString
*)type {
//先判断当前浏览的项目是否已经被加到收藏栏中了
BOOL result = [self
isExistedWithCellId:model.id
andRecordType:type];
if (result) {
NSLog(@"当前正在浏览的项目已经添加到收藏栏中了");
return;
}
NSString * addInfoTable =
@"insert into collectionInfoTable (cellId,title,pic,update_time,url,recordType) values (?,?,?,?,?,?)";
BOOL isSuccess = [_dataBase
executeUpdate:addInfoTable,model.id,model.title,model.pic,model.update_time,model.url,type];
if (isSuccess) {
//NSLog(@"添加一条新的收藏记录成功");
}
else {
//NSLog(@"添加一条新的收藏记录失败");
}
}
//删除一条收藏记录
- (void)deleteOneCollentionWithCellId:(NSString *)cellId andRecordType:(NSString
*)type {
NSString * deleteInfoTable =
@"delete from collectionInfoTable where cellId = ? and recordType = ?";
BOOL isSuccess = [_dataBase
executeUpdate:deleteInfoTable,cellId,type];
if (isSuccess) {
//NSLog(@"删除一条新的收藏记录成功");
}
else {
//NSLog(@"删除一条新的收藏记录失败");
}
}
//读取收藏记录到表格中
- (NSArray *)getdataInfoWithRecordType:(NSString *)type {
NSString * collectionInfoTable =
@"select * from collectionInfoTable where recordType = ?";
FMResultSet * set = [_dataBase
executeQuery:collectionInfoTable,type];
NSMutableArray * modelArray = [[NSMutableArray
alloc]
init];
//固定格式
while ([set next]) {
MainPageModel * oneModel = [[MainPageModel
alloc] init];
oneModel.id = [set
stringForColumn:@"cellId"];
oneModel.title = [set
stringForColumn:@"title"];
oneModel.pic = [set
stringForColumn:@"pic"];
oneModel.url = [set
stringForColumn:@"url"];
oneModel.update_time = [set
stringForColumn:@"update_time"];
[modelArray
addObject:oneModel];
}
return modelArray;
}
//判断当前浏览项目是否已经添加到收藏里面了
- (BOOL)isExistedWithCellId:(NSString *)cellId andRecordType:(NSString *)type
{
NSString * collectionInfoTable =
@"select * from collectionInfoTable where cellId = ? and recordType = ?";
//先查询数据库
确定正在浏览的项目是否已经存在于收藏记录中了
FMResultSet * collectionInfoTableSet = [_dataBase
executeQuery:collectionInfoTable,cellId,type];
BOOL result = [collectionInfoTableSet
next];
if (result) {
//存在
return YES;
}
else {
//不存在
return NO;
}
}
@end
【注】数据库可以存储和管理数据,转变成用户所需的各种数据库管理的方式。
1.第三方库的头文件
#import "FMDB.h"
2.导入数据模型的头文件
#import "MainPageModel.h"
二、各种方法
@interface MyFMDBInfo :
NSObject
{
//记录是否打开成功
BOOL _isOpenSuccess;
//创建数据库管理对象
FMDatabase * _dataBase;
}
//打开成功
- (BOOL)open;
//插入一条数据,表示新加入一条收藏
第一个参数表示插入的数据模型 第二个参数是标记
- (void)insertCollectionWithModel:(MainPageModel *)model andRecordType:(NSString
*)type;
//删除一条收藏记录
根据其cellId来删除
- (void)deleteOneCollentionWithCellId:(NSString *)cellId andRecordType:(NSString
*)type;
//判断正在浏览的这一项是否已经被收藏了
- (BOOL)isExistedWithCellId:(NSString *)cellId andRecordType:(NSString *)type;
//获取表中的信息
- (NSArray *)getdataInfoWithRecordType:(NSString *)type;
@end
三、方法的具体实现
@implementation MyFMDBInfo
- (void)dealloc {
//如果打开成功
if (_isOpenSuccess) {
//关闭数据库
[_dataBase
close];
}
}
//在构造方法中实例化数据库管理对象
- (instancetype)init {
if (self = [super
init]) {
//实例化管理对象
_dataBase = [FMDatabase
databaseWithPath:[self
dataBasePath]];
//初始化为没有打开
_isOpenSuccess =
NO;
}
return
self;
}
- (NSString *)dataBasePath {
return [NSString
stringWithFormat:@"%@/Documents/dataBase.rdb",NSHomeDirectory()];
}
#pragma mark - 创建数据库表 -
- (BOOL)open {
_isOpenSuccess = [_dataBase
open];
//如果没有打开数据库,就不用创建数据库表了
if (!_isOpenSuccess) {
return
_isOpenSuccess;
}
//创建一个收藏信息表
NSString * createCollectionInfoTable =
@"create table if not exists collectionInfoTable (id integer primary key,cellId text,title text,pic text,update_time text,url text,recordType)";
BOOL createSuccess = [_dataBase
executeUpdate:createCollectionInfoTable];
//如果创建成功,返回打开成功,如果创建失败,就当打开数据库失败,返回失败
if (!createSuccess) {
[_dataBase
close];
_isOpenSuccess =
NO;
return
_isOpenSuccess;
}
return
_isOpenSuccess;
}
#pragma mark - 对数据库的操作 -
//增加一条收藏
- (void)insertCollectionWithModel:(MainPageModel *)model andRecordType:(NSString
*)type {
//先判断当前浏览的项目是否已经被加到收藏栏中了
BOOL result = [self
isExistedWithCellId:model.id
andRecordType:type];
if (result) {
NSLog(@"当前正在浏览的项目已经添加到收藏栏中了");
return;
}
NSString * addInfoTable =
@"insert into collectionInfoTable (cellId,title,pic,update_time,url,recordType) values (?,?,?,?,?,?)";
BOOL isSuccess = [_dataBase
executeUpdate:addInfoTable,model.id,model.title,model.pic,model.update_time,model.url,type];
if (isSuccess) {
//NSLog(@"添加一条新的收藏记录成功");
}
else {
//NSLog(@"添加一条新的收藏记录失败");
}
}
//删除一条收藏记录
- (void)deleteOneCollentionWithCellId:(NSString *)cellId andRecordType:(NSString
*)type {
NSString * deleteInfoTable =
@"delete from collectionInfoTable where cellId = ? and recordType = ?";
BOOL isSuccess = [_dataBase
executeUpdate:deleteInfoTable,cellId,type];
if (isSuccess) {
//NSLog(@"删除一条新的收藏记录成功");
}
else {
//NSLog(@"删除一条新的收藏记录失败");
}
}
//读取收藏记录到表格中
- (NSArray *)getdataInfoWithRecordType:(NSString *)type {
NSString * collectionInfoTable =
@"select * from collectionInfoTable where recordType = ?";
FMResultSet * set = [_dataBase
executeQuery:collectionInfoTable,type];
NSMutableArray * modelArray = [[NSMutableArray
alloc]
init];
//固定格式
while ([set next]) {
MainPageModel * oneModel = [[MainPageModel
alloc] init];
oneModel.id = [set
stringForColumn:@"cellId"];
oneModel.title = [set
stringForColumn:@"title"];
oneModel.pic = [set
stringForColumn:@"pic"];
oneModel.url = [set
stringForColumn:@"url"];
oneModel.update_time = [set
stringForColumn:@"update_time"];
[modelArray
addObject:oneModel];
}
return modelArray;
}
//判断当前浏览项目是否已经添加到收藏里面了
- (BOOL)isExistedWithCellId:(NSString *)cellId andRecordType:(NSString *)type
{
NSString * collectionInfoTable =
@"select * from collectionInfoTable where cellId = ? and recordType = ?";
//先查询数据库
确定正在浏览的项目是否已经存在于收藏记录中了
FMResultSet * collectionInfoTableSet = [_dataBase
executeQuery:collectionInfoTable,cellId,type];
BOOL result = [collectionInfoTableSet
next];
if (result) {
//存在
return YES;
}
else {
//不存在
return NO;
}
}
@end
【注】数据库可以存储和管理数据,转变成用户所需的各种数据库管理的方式。
相关文章推荐
- 使用 xtrabackup做mysql5.6.10主从
- MySQL最大连接数设置
- MYSQL乐观锁
- mysql悲观锁
- sql面向过程用法
- mongodb服务安装,搭建副本集及原理概述
- mysql-cluster集群-安装篇 双服务器
- mysql 数据库备份方案及策略
- Ubuntu server 15.0.4 Redis相关笔记及配置参数说明
- HA集群之四:Corosync+Pacemaker+DRBD实现HA Mysql
- Oracle中绝对值小于1的小数如何显示小数点前面的0
- oracle数据库访问类
- Spring-data-redis:特性与实例--转载
- SQL基础巩固
- 数据库技术
- SqlServer将没有log文件的数据库文件附加到服务器中
- yum安装mysql
- MongoDB当前操作db.currentOp()示例
- MongoDB当前操作db.currentOp()示例
- 关于数据库view更新的问题