BBASQLiteAbstract.h 1.98 KB
//
//  BBASQLiteHelper.h
//  BaiduBoxApp
//
//  Created by juxunzhuo on 13-11-15.
//  Copyright (c) 2013年 Baidu. All rights reserved.
//

#import <FMDB/FMDB.h>

// 类型定义
typedef void (^IllegalDatabaseVersionFoundHandler)(NSInteger currentVersion, NSInteger newVersion);

// @class - BBASQLiteHelper
// @brief - 数据库操作的抽象类,必须子类化此类,并重写onOpen,onUpgrade, onCreate.
//NS_CLASS_DEPRECATED_IOS(2_0, 7_0, "BBASQLiteAbstract is deprecated. 直接使用FMDatabaseQueue")
@interface BBASQLiteAbstract : NSObject

@property (nonatomic, copy) IllegalDatabaseVersionFoundHandler illegalDatabaseVersionFoundHandler; // 数据库版本高于程序当前版本时调用
@property(nonatomic, assign, readonly) NSInteger oldDBVersion;  // 数据库升级前版本号,数据迁移用

// -- 数据库的初始化
- (instancetype)initWithPath:(NSString *)path andVersion:(NSUInteger)version;

// --获得数据库目录, 仅在Debug时(线上Debug与DebugModel中)AriDrop导出时使用!!
- (NSString*)obtainDBPath;

// -- 执行数据库操作的block,不要在此block中做与数据库无关的耗时操作
- (void)inDatabase:(void (^)(FMDatabase *db))block; // 执行一个操作数据库的block
- (void)inTransaction:(void (^)(FMDatabase *db, BOOL *rollback))aBlock; // 执行一个操作数据库的block,block在执行前会开启一个事务
- (void)inDeferredTransaction:(void (^)(FMDatabase *db, BOOL *rollback))aBlock; // 执行一个操作数据库的block,block在执行前会开启一个延迟事务

// -- 抽象接口,子类必须重写,不能调用[super onXXX:]
- (void)onCreate:(FMDatabase *)database; // 数据库创建后需要执行的操作
- (void)onOpen:(FMDatabase *)database; // 数据库打开后需要执行的操作
- (void)onUpgradeDatabase:(FMDatabase *)database fromVersion:(NSUInteger)oldVersion toVersion:(NSUInteger)newVersion; // 数据库升级操作

- (FMDatabase *)database;
//9.0废弃此类,禁止新增和继承

@end //BBASQLiteHelper