返回
FMDB 源码解析(二)—— FMDatabase 类详解
IOS
2024-01-05 00:53:55
前言
在上篇文章中,我们介绍了文件的组成并详细介绍了 FMResultSet 类。本文将接着上篇的分析进行 FMDatabase 文件的解读。
FMDatabase 类概述
FMDatabase 表示一个单独的 SQLite DB 实例,通过它可以对数据库进行增删改查等操作。FMDatabase 类提供了丰富的 API,可以满足大多数数据库操作需求。
FMDatabase 类的属性
FMDatabase 类具有以下属性:
- dbPath : 数据库文件的路径。
- openResult : 数据库打开的结果代码。
- lastErrorCode : 最近一次数据库操作的错误代码。
- lastErrorMessage : 最近一次数据库操作的错误信息。
- logsErrors : 是否将错误记录到日志中。
- crashOnErrors : 是否在发生错误时崩溃。
- busyRetryTimeout : 在发生繁忙错误时重试的超时时间。
- cachedStatements : 缓存的 SQL 语句。
- openFlags : 打开数据库时使用的标志。
- db: SQLite 数据库句柄。
FMDatabase 类的构造函数
FMDatabase 类有两个构造函数:
- init() : 默认构造函数,创建一个未打开的数据库实例。
- init(path:) : 指定数据库文件路径的构造函数,创建一个打开的数据库实例。
FMDatabase 类的主要方法
FMDatabase 类提供了丰富的 API,包括以下主要方法:
- open() : 打开数据库。
- close() : 关闭数据库。
- executeQuery(_:values:) : 执行 SQL 查询。
- executeUpdate(_:values:) : 执行 SQL 更新。
- rollback() : 回滚数据库事务。
- commit() : 提交数据库事务。
- inTransaction(_:) : 在事务中执行代码块。
- cachedStatements() : 获取缓存的 SQL 语句。
- addCacheStatement(_:withQuery:) : 将 SQL 语句添加到缓存中。
- removeCachedStatement(_:) : 从缓存中删除 SQL 语句。
FMDatabase 类的内部实现
FMDatabase 类的内部实现比较复杂,涉及到 SQLite 数据库的底层操作。本文不会详细介绍 FMDatabase 类的内部实现,读者可以参考 FMDB 源码来了解更多细节。
总结
FMDatabase 类是 FMDB 的核心类之一,它提供了丰富的 API,可以满足大多数数据库操作需求。本文详细介绍了 FMDatabase 类的属性、方法和内部实现,帮助读者深入了解 FMDB 的工作原理。