BBASQLiteAbstract.h
1.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//
// 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