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

iOS 存储之FMDB

2016-12-08 18:17 148 查看
1.在Github上下载FMDB,导入fmdb,删除里面的plist文件

2.导入库libsqlite3.tbd

3.包含头文件#import “FMDB.h”

写一个数据库工具类,包含数据的增删改查

另写一个模型类,存放要存入数据库的数据模型

4.下面贴出我的数据库工具类

#import "DBManager.h"
#import "FMDB.h"

@implementation DBManager{
FMDatabase *db;
NSString *path;
}
+ (DBManager *)shareManager{
static DBManager *dB = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
if (dB == nil) {
dB = [[DBManager alloc] init];
}
});
return dB;
}

- (id)init{
self = [super init];
if (self) {
NSString *dbPath = [NSHomeDirectory() stringByAppendingString:@"/Documents/appa.db"];
NSLog(@"打印数据库路径:%@",dbPath);
path = dbPath;
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:path]){
db = [[FMDatabase alloc] initWithPath:path];
if ([db open]) {
NSLog(@"打开数据库成功");
NSString *sql = @"CREATE TABLE IF NOT EXISTS t_student (sid text unique NOT NULL, name text NOT NULL, age text NOT NULL)";
BOOL isSuccess = [db executeUpdate:sql];
if (isSuccess) {
NSLog(@"创建表成功");
}else{
NSLog(@"创建表失败");
}
[db close];
}else{
NSLog(@"请打开数据库");
}
}
}
return self;
}

#pragma mark - 数据库操作
//查询
- (BOOL)isExistsDataWithModel:(Student *)model{
db = [FMDatabase databaseWithPath:path];
NSMutableArray *array = [NSMutableArray array];
if ([db open]){
NSString *sql = @"select sid from t_student where sid = ?";
FMResultSet *set = [db executeQuery:sql,model.sid];
while ([set next]) {
[array addObject:model.sid];
}
[db close];
}
return array.count>0?YES:NO;
}

//插入
- (void)insertDataWithModel:(Student *)model{
db = [FMDatabase databaseWithPath:path];
if ([db open]){
NSString *sql = @"insert into t_student (sid,name,age) values (?,?,?)";
BOOL isSuccess = [db executeUpdate:sql,model.sid,model.name,model.age,nil];
if (isSuccess) {
NSLog(@"插入成功");
}else{
NSLog(@"插入失败");
}
[db close];
}
}
//删除
- (BOOL)deleteDataWithModel:(Student *)model{
db = [FMDatabase databaseWithPath:path];
if ([db open]){
NSString *sql = @"delete from t_student where sid = ?";
BOOL isSuccess = [db executeUpdate:sql,model.sid];
if (isSuccess) {
NSLog(@"删除成功");
}else{
NSLog(@"删除失败");
}
[db close];
}
return YES;
}
//修改
- (BOOL)changeDataWithModel:(Student *)model newStr:(NSString *)str{

db = [FMDatabase databaseWithPath:path];
if ([db open]){
NSString *sql = @"update t_student set name = ? where name = ?";
BOOL isSuccess = [db executeUpdate:sql,str,model.name];
if (isSuccess) {
NSLog(@"修改成功");
}else{
NSLog(@"修改失败");
}
[db close];
}
return YES;
}
//返回所有数据
- (NSArray *)allData{
//装数据模型
NSMutableArray *array = [NSMutableArray array];
db = [FMDatabase databaseWithPath:path];
if ([db open]){
NSString *sql = @"select * from t_student";
FMResultSet *res = [db executeQuery:sql];
while ([res next]) {
Student *model = [[Student alloc] init];
model.sid = [res stringForColumn:@"sid"];
model.name = [res stringForColumn:@"name"];
model.age = [res stringForColumn:@"age"];
[array addObject:model];
}
[db close];
}
return array;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 数据库 SQLite