Swift GRDB 是一个基于 SQLite 数据库的 Swift ORM 框架,可以方便地实现数据的增删改查和使用 FTS5 搜索。

  1. 数据库连接和表格定义

首先需要连接到数据库,可以使用 GRDB 提供的 DatabaseQueue 进行连接。然后可以定义表格结构和模型类:

import GRDB

// 定义表格结构
struct Book: Codable, FetchableRecord, PersistableRecord {
    var id: Int64?
    var title: String
    var author: String
    var publishDate: Date?
}

// 数据库连接
let dbQueue = try! DatabaseQueue(path: "/path/to/database.sqlite")

// 创建表格
try! dbQueue.write { db in
    try db.create(table: "book") { t in
        t.column("id", .integer).primaryKey()
        t.column("title", .text).notNull()
        t.column("author", .text).notNull()
        t.column("publishDate", .datetime)
    }
}

// 插入数据
let book = Book(title: "Swift Programming Language", author: "Apple Inc.", publishDate: Date())
try! dbQueue.write { db in
    try book.insert(db)
}
  1. 数据的增删改查

使用 GRDB 可以方便地进行数据的增删改查:

// 查询数据
let books = try! dbQueue.read { db in
    try Book.fetchAll(db)
}

// 更新数据
try! dbQueue.write { db in
    book.title = "Swift 5.5 Programming Language"
    try book.update(db)
}

// 删除数据
try! dbQueue.write { db in
    try book.delete(db)
}
  1. FTS5 搜索

GRDB 提供了 FTS5 搜索的支持,可以使用全文搜索进行数据的查询:

// 创建 FTS5 虚拟表格
try! dbQueue.write { db in
    try db.create(virtualTable: "book_fts", using: FTS5()) { t in
        t.column("title")
        t.column("author")
    }
}

// 插入数据到 FTS5 虚拟表格
try! dbQueue.write { db in
    try db.execute(sql: "INSERT INTO book_fts (docid, title, author) SELECT id, title, author FROM book")
}

// FTS5 搜索
let searchResult = try! dbQueue.read { db in
    try Book
        .select()
        .filter(Fts3Match([Column("title"), Column("author")], "Swift"))
        .fetchAll(db)
}

以上是使用 Swift GRDB 实现数据的增删改查和使用 FTS5 搜索的基本方法。需要注意的是,在实际开发中,还需要考虑数据模型的设计、数据校验和安全性等问题。

Swift GRDB 数据库操作:增删改查与 FTS5 搜索教程

原文地址: https://www.cveoy.top/t/topic/oRf1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录