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

  • 创建数据库

  • 创建表

  • 初始化数据库

+ (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

  • 获取表中某一元素的个数

+ (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

+ (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;
}

追加字段

if (![db columnExists:@"score" inTableWithName:kWordHomeWordTable]) {

[db executeUpdate:@"ALTER TABLE %@ ADD COLUMN score INTEGER default 0", kTableName];

}


###一些特殊需求:


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



(待整理和完善)