Swift GRDB 数据库操作:增删改查与 FTS5 搜索教程
Swift GRDB 是一个基于 SQLite 数据库的 Swift ORM 框架,可以方便地实现数据的增删改查和使用 FTS5 搜索。
- 数据库连接和表格定义
首先需要连接到数据库,可以使用 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)
}
- 数据的增删改查
使用 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)
}
- 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 搜索的基本方法。需要注意的是,在实际开发中,还需要考虑数据模型的设计、数据校验和安全性等问题。
原文地址: https://www.cveoy.top/t/topic/oRf1 著作权归作者所有。请勿转载和采集!