MVC
在Model中創(chuàng)建BLL和DAL
- BLL--業(yè)務(wù)邏輯層
- DAL--數(shù)據(jù)訪問層
對于數(shù)據(jù)的處理全放入數(shù)據(jù)訪問層DAL寄悯,業(yè)務(wù)邏輯層BLL只是對方法的調(diào)用,而在主函數(shù)中是業(yè)務(wù)邏輯層BLL的方法的調(diào)用忆植。
BLL相當(dāng)于是主管,讓DAL實際去實現(xiàn)數(shù)據(jù)的處理
利用FMDB來進行數(shù)據(jù)的存儲封裝方法
- 引入sqlite3的框架
- 把FMDB的文件作為第三方copy進來
- 對FMDB進行二次封裝fmdbHelper
#import <Foundation/Foundation.h>
#import "FMDB.h"
@interface FmdbHelper : NSObject
@property (nonatomic, strong) FMDatabase *db;
//單例的類方法
+(instancetype)fmdbHelper;
//執(zhí)行更新(除了查詢以外的方法)
- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments;
//查詢
-(void)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)
arguments andReslutBlock:(void(^)(FMResultSet *set))block;
@end
#import "FmdbHelper.h"
@implementation FmdbHelper
//單例的類方法
+(instancetype)fmdbHelper{
static FmdbHelper *instance;
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
instance = [[FmdbHelper alloc] init];
//db屬性初始化
//數(shù)據(jù)庫文件的路徑
NSString *documentPath = [NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *dbPath = [documentPath stringByAppendingPath
Component:@"temp.db"];
NSLog(@"dbPath %@", dbPath);
//初始化對象
instance.db = [[FMDatabase alloc] initWithPath:dbPath];
});
return instance;
}
//執(zhí)行更新(除了查詢以外的方法)
- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)
arguments{
//打開數(shù)據(jù)庫
if ([_db open]) {
//執(zhí)行更新
BOOL res = [_db executeUpdate:sql withArgumentsInArray:
arguments];
//關(guān)閉數(shù)據(jù)庫
[_db close];
return res;
}
return NO;
}
//查詢
-(void)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)
arguments andReslutBlock:(void(^)(FMResultSet *set))block{
//打開數(shù)據(jù)庫
if ([_db open]) {
//執(zhí)行查詢
FMResultSet *set = [_db executeQuery:sql withArgumentsInArray:
arguments];
//遍歷結(jié)果
block(set);
//關(guān)閉數(shù)據(jù)庫
[_db close];
}
}
@end
- 在DAL中進行數(shù)據(jù)的操作
- 在DAL中要先創(chuàng)建sql語句
- 執(zhí)行sql語句