返回

FMDB 源码解析(二)—— FMDatabase 类详解

IOS

前言

在上篇文章中,我们介绍了文件的组成并详细介绍了 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 的工作原理。