SQLite Manager

SQLiteManager

SQLiteManager 是一个用于管理 SQLite 数据库的框架。它与 Apple Framework Combine 协同工作,将数据库中的数据发布到应用程序中。例如,您可以创建您的基本 SQLite 数据库并将其放入您的 Swift 应用程序的 bundle 中。然后您可以将其复制到工作文件夹作为 SQLite 数据库,以便在其中存储或读取数据。您也可以在运行时创建 SQLite 数据库并将其保存到自定义文件夹。

目录

特性

要求

下表概述了此软件包的要求

平台 最低 Swift 版本 安装
iOS 14.0+ / macOS 10.15+ 5.3 Swift Package Manager

安装

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/Flexible-Universe/SQLiteManager.git", .upToNextMajor(from: "1.0.0"))
]

示例

使用 SQL 命令创建表

private var cancellables = Set<AnyCancellable>()

/* ... */

let fileManager = FileManager.default
let tempDirectoryURL = URL(fileURLWithPath: NSTemporaryDirectory())
let dbFileURL = tempDirectoryURL.appendingPathComponent("test.db")

let sqlite = try SQLiteManager(path: dbFileURL.path)

let createTableSQL = """
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
    age INTEGER
);
"""
sqlite.query(sql: createTableSQL).sink(receiveCompletion: { _ in }, receiveValue: { _ in })
    .store(in: &cancellables)

这段代码创建了一个包含 name 和 age 列的表。在此之后,您可以插入一些数据

private var cancellables = Set<AnyCancellable>()

/* ... */

var insertDataSQL = "INSERT INTO users (name, age) VALUES ('John Doe', 30);"
sqlite.query(sql: insertDataSQL).sink(receiveCompletion: { _ in }, receiveValue: { _ in })
    .store(in: &cancellables)
insertDataSQL = "INSERT INTO users (name, age) VALUES ('Jane Smith', 27);"
sqlite.query(sql: insertDataSQL).sink(receiveCompletion: { _ in }, receiveValue: { _ in })
    .store(in: &cancellables)

或者使用 SQL-SELECT 命令从表中获取一些数据

private var cancellables = Set<AnyCancellable>()

/* ... */

let sql = "SELECT * FROM users WHERE age > ?"
let parameters: [Any] = [25]

sqlite.query(sql: sql, parameters: parameters)
    .sink(receiveCompletion: { completion in
        switch completion {
        case .finished:
            print("The sql command finished successfully...")
        case .failure(let error):
            print("The sql command failed with error: \(error)")
        }
    }, receiveValue: { rows in
        print("The count of rows is: \(rows.count)")
        print("The name is : \(rows[0]["name"] as? String)")
        print("The age is  : \(rows[0]["age"] as? Int)")
    })
    .store(in: &cancellables)

文档

可通过此链接访问全面的文档。

许可

SQLiteManager 在 MIT 许可证下发布。有关详细信息,请参见 LICENSE