文章目录
前言
在完成知乎日报仿写项目时,在文章详情页进行点赞和收藏,在个人账号页面的收藏里需要展现出来,这里使用到了第三方库FMDB,这里是笔者对FMDB库的简单学习。
FMDB
FMDB 是 iOS 平台的 SQLite 数据库框架,FMDB 以 OC 的方式封装了 SQLite 数据库的 C 语言 API,它提供了一个简单易用的API来操作SQLite数据库。
一、特点
简单易用:FMDB提供了一个简洁的接口,使得执行SQL语句变得非常简单。
线程安全:FMDB支持在多个线程中使用,通过FMDatabaseQueue可以确保数据库操作的线程安全。
高性能:FMDB直接使用SQLite的核心库,提供了高性能的数据库操作。
灵活的查询:FMDB支持预编译的SQL语句,可以灵活地处理查询结果。
事务支持:FMDB支持事务处理,可以确保数据库操作的原子性。
二、关于SQLite
之前提到说,FMDB 是 iOS 平台的 SQLite 数据库框架,它将SQLite数据库以OC语言封装。现在,我们简单了解一下SQLite数据库。
什么是 SQLite?
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,不需要在系统中配置。
就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
三、FMDB库的导入
在podfile里写入代码:
pod 'FMDB'
然后在电脑终端打开项目进行命令行操作:
pod install
关于cocoapods的安装使用和podfile文件的编写格式请看之前的博客:
【iOS】Masnory的简单学习
四、FMDB库的使用
1. 核心类
FMDB 主要包含以下几个核心类:
FMDatabase:一个FMDatabase对象就代表一个单独的 SQLite 数据库,用来执行 SQL 语句。
FMResultSet:表示使用 FMDatabase 执行查询后的结果集。
FMDatabaseQueue:用于在多线程中执行多个查询或更新,它是线程安全的。
2.使用步骤
创建
- (void)createCollectData {
//1.获取数据库文件的路径
NSString *doc = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString* filename = [doc stringByAppendingPathComponent: @"collectDatabase.sqlite"];
NSLog(@"\nfilename = %@\n", filename);
//2.创建数据库对象
self.collectDatabase = [FMDatabase databaseWithPath:filename];
//3.打开数据库
if ([self.collectDatabase open]) {
//do something
NSLog(@"Open collectDatabase succeed!")
} else {
NSLog(@"Open collectionDatabase error!");
}
}
}
写入(不确定的参数用?来占位)
- (void)saveStoriesCollectSet {
if ([self.collectDatabase open]) {
for (NSString* ID in self.storiesCollectSet) {
FMResultSet* resultSet = [self.collectDatabase executeQuery: @"SELECT * FROM collectDatabase WHERE idLabel = ?", ID];
if (![resultSet next]) {
BOOL result = [self.collectDatabase executeUpdate: @"INSERT INTO collectDatabase (idLabel) VALUES (?)", ID];
if (result) {
NSLog(@"Insert table succeed");
} else {
NSLog(@"Insert table error");
}
}
}
[self.collectDatabase close];
}
}
删除
- (void)deleteCollectSetWithID:(NSString*)ID {
if ([self.collectDatabase open]) {
BOOL result = [self.collectDatabase executeUpdate: @"delete from collectDatabase WHERE idLabel = ?", ID];
if (result) {
NSLog(@"Delete succeed");
} else {
NSLog(@"Delete error");
}
}
}
上述操作使用executeUpdate:方法执行更新,至于使用executeUpdateWithFormat:等方法和执行查询操作,笔者正在学习,后续会更新博客。
总结
FMDB 是一个非常强大的 SQLite 封装库,它简化了 SQLite 的使用,并提供了线程安全的支持,使得在 iOS 开发中进行数据库操作变得更加方便和安全。笔者只是初步对其进行了学习,后续还会对第三方库进行更深入的了解。
参考文章:
iOS-FMDB详解及使用
iOS 开发 – SQLite 重要框架 FMDB 的使用