avatar

FMDB的使用

关于这篇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语句大写,变量小写,方便区分。



(待整理和完善)

文章作者: 新风作浪
文章链接: http://duxinfeng.com/2015/07/11/fmdb/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 新风作浪

评论