0
点赞
收藏
分享

微信扫一扫

谷歌Gemini发布iOS版App,live语音聊天免费用!

文章目录

前言

  在完成知乎日报仿写项目时,在文章详情页进行点赞和收藏,在个人账号页面的收藏里需要展现出来,这里使用到了第三方库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 的使用

举报

相关推荐

0 条评论