返回 导航

Swift

hangge.com

Swift - 第三方SQLite库FMDB使用详解1(安装配置、工具类封装)

作者:hangge | 2019-04-02 08:10

一、基本介绍

1,什么是 FMDB?

  • FMDB iOS 平台的 SQLite 数据库框架。
  • FMDB OC 的方式封装了 SQLite C 语言的 API

2,FMDB 的优点

  • FMDB 对比苹果自带的 Core Data 框架,更加轻量级和灵活。使用起来更加面向对象,省去了很多麻烦、冗余的 C 语言代码。
  • FMDB 还提供了多线程安全的数据库操作方法,能有效地防止数据混乱。

3,FMDB 三个主要的类

(1)FMDatabase:一个 FMDatabase 表示一个 sqlite 数据库,所有对数据库的操作都是通过这个类(线程不安全)。它有如下几个方法:
  • executeStatements:执行多条 sql
  • executeQuery:执行查询语句。
  • executeUpdate:执行除查询以外的语句,如 createdropinsertdeleteupdate

(2)FMDatabaseQueue:内部封装 FMDatabase 和串行 queue,用于多线程操作数据库,并且提供事务(线程安全)。
  • inDatabase: 参数是一个闭包,在闭包里面可以获得 FMDatabase 对象。
  • inTransaction: 使用事务。

(3)FMResultSet:查询的结果集。可以通过字段名称获取字段值。

二、安装配置

(1)从 GitHub 上下载最新的代码:https://github.com/ccgus/fmdb
(2)将下载下来的源码包中 src文件夹下 fmdb 文件夹的拖拽至你的工程中。注意:fmdb 文件夹中的 info.plist 要删除掉。

(3)由于 FMDB 是使用 OC 写的,所以我们还需要创建一个桥接头文件 bridge.h,并在项目中配置。

(4)桥接头文件 bridge.h 内容如下:
#import "FMDB.h"

(5)在 Build Phases -> Link Binary With Libraries 中点击加号,添加 libsqlite3.0.tbd 到项目中来

三、工具类的封装和使用

1,封装 FMDB 工具类

为方便使用,我们首先创建一个数据库类(SQLiteManager
import Foundation

// 数据库管理类
class SQLiteManager: NSObject {
    
    // 创建单例
    private static let manger: SQLiteManager = SQLiteManager()
    class func shareManger() -> SQLiteManager {
        return manger
    }
    
    // 数据库名称
    private let dbName = "test.db"
    
    // 数据库地址
    lazy var dbURL: URL = {
        // 根据传入的数据库名称拼接数据库的路径
        let fileURL = try! FileManager.default
            .url(for: .applicationSupportDirectory, in: .userDomainMask,
                 appropriateFor: nil, create: true)
            .appendingPathComponent(dbName)
        print("数据库地址:", fileURL)
        return fileURL
    }()
    
    // FMDatabase对象(用于对数据库进行操作)
    lazy var db: FMDatabase = {
        let database = FMDatabase(url: dbURL)
        return database
    }()
    
    // FMDatabaseQueue对象(用于多线程事务处理)
    lazy var dbQueue: FMDatabaseQueue? = {
        // 根据路径返回数据库
        let databaseQueue = FMDatabaseQueue(url: dbURL)
        return databaseQueue
    }()
}

2,FMDB 工具类测试

(1)下面我们使用 SQLiteManager 工具类,通过 open 方法打开数据库。注意 open 方法有如下特点:
  • 如果指定路径对应的数据库文件已经存在, 就会直接打开。
  • 如果不存在的话, 则会自动创建一个新的数据库文件。
import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let db = SQLiteManager.shareManger().db
        if db.open() {
            print("数据库打开成功!")
        } else {
            print("数据库打开失败: \(db.lastErrorMessage())")
        }
        db.close()
    }
}

(2)运行结果如下:

(3)打开指定的沙盒目录,可以看到数据库文件确实也自动创建成功了。
评论

全部评论(0)

回到顶部