SQLite.swift 0.15.3

SQLite.swift 0.15.3

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最新版本2024年4月
SPM支持 SPM

Stephen CelisJan BerkelYehor PopovychNathan Fallet 维护。



SQLite.swift

Build Status CocoaPods Version Swift5 compatible Platform Carthage compatible Join the chat at https://gitter.im/stephencelis/SQLite.swift

一个在 SQLite3 之上的类型安全的 Swift 语言层。

SQLite.swift 提供了关于 SQL 语句语法和意图的编译时信心。

特性

  • 纯 Swift 接口
  • 类型安全、可选感知的 SQL 表达式构建器
  • 灵活、可链式、惰性执行的查询层
  • 自动类型数据访问
  • 轻量、简单易用的查询和参数绑定接口
  • 友好的错误处理和调试
  • 支持全文本搜索
  • 文档齐全
  • 广泛测试
  • 通过 CocoaPods 支持 SQLCipher
  • 模式查询/迁移
  • Linux 上运行(有一些限制)
  • StackOverflowGitter 聊天室(试验性的)提供活跃支持

使用方法

import SQLite

// Wrap everything in a do...catch to handle errors
do {
    let db = try Connection("path/to/db.sqlite3")

    let users = Table("users")
    let id = Expression<Int64>("id")
    let name = Expression<String?>("name")
    let email = Expression<String>("email")

    try db.run(users.create { t in
        t.column(id, primaryKey: true)
        t.column(name)
        t.column(email, unique: true)
    })
    // CREATE TABLE "users" (
    //     "id" INTEGER PRIMARY KEY NOT NULL,
    //     "name" TEXT,
    //     "email" TEXT NOT NULL UNIQUE
    // )

    let insert = users.insert(name <- "Alice", email <- "[email protected]")
    let rowid = try db.run(insert)
    // INSERT INTO "users" ("name", "email") VALUES ('Alice', '[email protected]')

    for user in try db.prepare(users) {
        print("id: \(user[id]), name: \(user[name]), email: \(user[email])")
        // id: 1, name: Optional("Alice"), email: [email protected]
    }
    // SELECT * FROM "users"

    let alice = users.filter(id == rowid)

    try db.run(alice.update(email <- email.replace("mac.com", with: "me.com")))
    // UPDATE "users" SET "email" = replace("email", 'mac.com', 'me.com')
    // WHERE ("id" = 1)

    try db.run(alice.delete())
    // DELETE FROM "users" WHERE ("id" = 1)

    try db.scalar(users.count) // 0
    // SELECT count(*) FROM "users"
} catch {
    print (error)
}

SQLite.swift 还可以作为 C API 的轻量级、Swift 实友的包装器。

// Wrap everything in a do...catch to handle errors
do {
    // ...
    
    let stmt = try db.prepare("INSERT INTO users (email) VALUES (?)")
    for email in ["[email protected]", "[email protected]"] {
        try stmt.run(email)
    }

    db.totalChanges    // 3
    db.changes         // 1
    db.lastInsertRowid // 3

    for row in try db.prepare("SELECT id, email FROM users") {
        print("id: \(row[0]), email: \(row[1])")
        // id: Optional(2), email: Optional("[email protected]")
        // id: Optional(3), email: Optional("[email protected]")
    }

    try db.scalar("SELECT count(*) FROM users") // 2
} catch {
    print (error)
}

阅读文档或从 Xcode 项目的 playground 中交互式探索更多内容。

SQLite.playground Screen Shot

安装

注意:版本 0.11.6 及更高版本需要 Swift 5 (并且 Xcode 10.2)或更高。版本 0.11.5 需要 Swift 4.2 (并且 Xcode 10.1)或更高。

Swift 包管理器

Swift 包管理器是一个用于管理 Swift 代码分发的工具。

  1. 添加以下内容到您的 Package.swift 文件中
dependencies: [
    .package(url: "https://github.com/stephencelis/SQLite.swift.git", from: "0.14.1")
]
  1. 构建您的项目
$ swift build

查看 Tests/SPM 文件夹中使用的 SPM 的小型演示项目。

Carthage

Carthage 是一个简单的、去中心化的 Cocoa 依赖项管理器。要使用 Carthage 安装 SQLite.swift

  1. 确保已安装 Carthage Carthage

  2. 更新您的 Cartfile 以包含以下内容

    github "stephencelis/SQLite.swift" ~> 0.14.1
  3. 运行 carthage update添加适当的框架

CocoaPods

CocoaPods 是用于 Cocoa 项目的依赖项管理器。要使用 CocoaPods 安装 SQLite.swift

  1. 确保已安装 CocoaPods CocoaPods

    # Using the default Ruby install will require you to use sudo when
    # installing and updating gems.
    [sudo] gem install cocoapods
  2. 更新您的 Podfile 以包含以下内容

    use_frameworks!
    
    target 'YourAppTargetName' do
        pod 'SQLite.swift', '~> 0.14.0'
    end
  3. 运行 pod install --repo-update

用户手册

要以子项目的方式安装SQLite.swift到Xcode中

  1. SQLite.xcodeproj 文件拖入您的项目中。(首先需要 通过Submodule、克隆或者 下载 项目。)

    Installation Screen Shot

  2. 在您的目标配置的 通用 选项卡中,点击 链接框架和库 下的 + 按钮。

  3. 选择适合您平台的相应 SQLite.framework

  4. 添加.

登录到实际设备还需要一些额外的步骤

  1. 通用 选项卡中,点击 嵌入的二进制文件 下的 + 按钮。

  2. 选择适合您平台的相应 SQLite.framework

  3. 添加.

通信

查看规划文档以获取路线图和现有功能请求。

阅读贡献指南TL;DR(但请;R

原作者

许可

SQLite.swift遵循MIT许可证。有关更多信息,请参阅LICENSE文件

关联

这些项目增强或使用SQLite.swift

替代

正在寻找其他内容?尝试另一个Swift封装(或FMDB