这是一个基于第三方FMDB写的数据库简单应用
/**
* 数据库管理类 用于记录搜索 将数据保存到数据库中
* 单例类
*/
#import <Foundation/Foundation.h>
#import "DBSearchNoteModel.h"
@interface DBSearchManager : NSObject
// 单例
+ (instancetype)sharedManager;
// 检查是否存在数据
- (BOOL)isExsitsWithNoteName:(NSString *) noteName;
// 添加一条数据到数据库中
- (BOOL)addNoteModel:(DBSearchNoteModel *) model;
// 删除数据
- (BOOL)deleteNoteNameModel:(DBSearchNoteModel *) model;
// 获取所有的记录
- (NSArray *)fetchAllData;
// 删除所有数据
- (void)deleteAllData;
@end
#import "DBSearchManager.h"
#import "FMDB.h"
@implementation DBSearchManager
{
FMDatabase *_database; // FMDB数据库管理对象
}
// 创建单例对象
+ (instancetype)sharedManager
{
static dispatch_once_t token;
static DBSearchManager * gDBManager = nil;
dispatch_once(&token, ^{
if (!gDBManager) {
gDBManager = [[DBSearchManager alloc] init];
}
});
return gDBManager;
}
- (instancetype)init
{
if (self = [super init]) {
NSString * dbPath = [NSString stringWithFormat:@"%@/Documents/note.sqlite", NSHomeDirectory()];
// 创建FMDatabase
// 如果在目录下没有这个数据库文件,将创建该文件。
_database = [[FMDatabase alloc] initWithPath:dbPath];
// 打开数据库
[_database open];
// 创建数据库表,表中的字段(appId, appName, appImage)
NSString * createSql = @"create table if not exists Notes(noteName varchar(255))";
// FMDatabase执行sql语句
// 当数据库文件创建完成时,首先创建数据表,如果没有这个表,就去创建,有了就不创建
[_database executeUpdate:createSql];
}
return self;
}
#pragma mark - 增删改查
// 检查是否存在数据
- (BOOL)isExsitsWithNoteName:(NSString *) noteName
{
FMResultSet * set = [_database executeQuery:@"select * from Notes where noteName = ?", noteName];
// 判断是否已存在数据
if ([set next]) {
return YES;
}
else
return NO;
}
// 添加一条数据到数据库中
- (BOOL)addNoteModel:(DBSearchNoteModel *) model
{
BOOL isExsits = [self isExsitsWithNoteName:model.noteName];
// 如果已存在数据,先删除已有的数据,再添加新数据
if (isExsits) {
[_database executeUpdate:@"delete from Notes where noteName = ?", model.noteName];
}
// 添加新数据
NSString * insertSql = @"insert into Notes values (?)";
BOOL success = [_database executeUpdate:insertSql,model.noteName];
return success;
}
// 删除数据
- (BOOL)deleteNoteNameModel:(DBSearchNoteModel *) model
{
// 判断将要删除的应用记录是否存在
BOOL isExists = [self isExsitsWithNoteName:model.noteName];
if (isExists) {
// 删除对应的记录
BOOL success = [_database executeUpdate:@"delete from Notes where noteName = ?", model.noteName];
return success;
}
else
{
NSLog(@"该记录不存在");
return NO;
}
}
// 获取所有的记录
- (NSArray *)fetchAllData
{
// 找出Collection表中所有的数据
NSString * fetchSql = @"select * from Notes";
// 执行sql
FMResultSet * set = [_database executeQuery:fetchSql];
// 循环遍历取出数据
NSMutableArray * array = [[NSMutableArray alloc] init];
while ([set next]) {
DBSearchNoteModel * model = [[DBSearchNoteModel alloc] init];
// 从结果集中获取数据
// 注:sqlite数据库不区别分大小写
model.noteName = [set stringForColumn:@"noteName"];
[array addObject:model];
}
return array;
}
// 删除所有数据
- (void)deleteAllData
{
[_database executeUpdate:@"delete from Notes"];
}
@end