FMDB的使用

Author Avatar
新风作浪 7月 11, 2015
  • 在其它设备中阅读本文章

关于这篇Blog:

网上也有不少写FMDB用法的,我为什么还在这里重造轮子?有两个目的:
1、自己做总结和备忘,在项目里会常用的东西
2、

FMDB介绍:

下载地址:https://github.com/ccgus/fmdb

如何集成

1、如果你的工程使用了CocoaPods进行管理,直接 pod 'FMDB'pod 'FMDB', '~> 2.5'
2、下载源码,把src目录下的fmdb文件夹拖到工程,导入libsqlite3.dylib库


我们先用一个宏来定义数据库的路径,每次通过这个宏来访问数据库路径

#define kPath_FMDB [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/db.sqlite"]

创建操作 CREAT

  • 创建数据库

  • 创建表

  • 初始化数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
+ (BOOL) initClientDB
{
__block BOOL result = NO;
FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:kPath_FMDB];
[queue inDatabase:^(FMDatabase *db) {
NSString *sql = [NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS %@ (content TEXT,qid INTEGER,commentcount INTEGER,likecount INTEGER,imgarray BLOB",kTableName];
result = [db executeUpdate:sql];
}];
return result;
}

插入操作 INSERT

查询操作 SELECT

  • 获取表中某一元素的个数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
+ (NSInteger)getAllCountFromDB
{
__block NSInteger totalCount = 0;
FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:kPath_FMDB];
[queue inDatabase:^(FMDatabase *db) {
NSString *sql = [NSString stringWithFormat:@"SELECT COUNT(qid) FROM %@",kTableName];
totalCount = [db intForQuery:sql];
}];
return totalCount;
}

删除操作 DELETE

  • 删除某个表
  • 删除表中某一个内容

修改操作 UPDATE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
+ (BOOL)unlikeFromDB:(NSInteger)tid
{
__block BOOL result = NO;
NSString *sql = [NSString stringWithFormat:@"DELETE FROM %@ WHERE tid = %zd",kTableName,tid];
FMDatabaseQueue *queue = [FMDatabaseQueue databaseQueueWithPath:kPath_FMDB];
[queue inDatabase:^(FMDatabase *db) {
result = [db executeUpdate:sql];
if (result) {
NSLog(@"取消收藏成功");
} else {
NSLog(@"取消收藏失败");
}
}];
return result;
}

追加字段

1
2
3
4
5
if (![db columnExists:@"score" inTableWithName:kWordHomeWordTable]) {
[db executeUpdate:@"ALTER TABLE %@ ADD COLUMN score INTEGER default 0", kTableName];
}

###一些特殊需求:


*在写SQL语句的时候,SQL语句大写,变量小写,方便区分。



(待整理和完善)