该项目提供了 SQLite 3 库的 Swift 封装。
此软件包使用 Swift Package Manager 构建,并且是 Perfect 项目的一部分。 它被编写为独立的,因此不需要 PerfectLib 或任何其他组件。
请确保您已安装并激活最新的 Swift 4.0 工具链。
要了解更多信息,您可以阅读完整的文档指南此处或跳转到示例此处
请确保您已安装 sqlite3。
sudo apt-get install sqlite3
将此项目作为依赖项添加到您的 Package.swift 文件中。
.Package(url: "https://github.com/PerfectlySoft/Perfect-SQLite.git", majorVersion: 3)
如果您在 $ swift build
期间遇到诸如sqlite3.h file not found
之类的错误,一种解决方案是安装 sqlite3-dev,即$ sudo apt-get install libsqlite3-dev
假设您想在 Swift 中托管一个博客。 首先我们需要表。 假设您已经创建了一个 SQLite 文件 ./db/database
,我们只需要连接并添加表。
let dbPath = "./db/database"
do {
let sqlite = try SQLite(dbPath)
defer {
sqlite.close()
}
try sqlite.execute(statement: "CREATE TABLE IF NOT EXISTS posts (id INTEGER PRIMARY KEY NOT NULL, post_title TEXT NOT NULL, post_content TEXT NOT NULL, featured_image_uri TEXT NOT NULL)")
} catch {
print("Failure creating database tables") //Handle Errors
}
接下来,我们需要添加一些内容。
let dbPath = "./db/database"
let postTitle = "Test Title"
let postContent = "Lorem ipsum dolor sit amet…"
do {
let sqlite = try SQLite(dbPath)
defer {
sqlite.close()
}
try sqlite.execute(statement: "INSERT INTO posts (post_title, post_content) VALUES (:1,:2)") {
(stmt:SQLiteStmt) -> () in
try stmt.bind(position: 1, postTitle)
try stmt.bind(position: 2, postContent)
}
} catch {
//Handle Errors
}
最后,我们从一个充满博客内容的 SQLite 数据库中检索帖子和帖子标题。 每个 id、帖子和标题都会附加到一个字典中以供其他地方使用。
let dbPath = "./db/database"
var contentDict = [String: Any]()
do {
let sqlite = try SQLite(dbPath)
defer {
sqlite.close() // This makes sure we close our connection.
}
let demoStatement = "SELECT post_title, post_content FROM posts ORDER BY id DESC LIMIT :1"
try sqlite.forEachRow(statement: demoStatement, doBindings: {
(statement: SQLiteStmt) -> () in
let bindValue = 5
try statement.bind(position: 1, bindValue)
}) {(statement: SQLiteStmt, i:Int) -> () in
self.contentDict.append([
"id": statement.columnText(position: 0),
"second_field": statement.columnText(position: 1),
"third_field": statement.columnText(position: 2)
])
}
} catch {
//Handle Errors
}
有关 Perfect 项目的更多信息,请访问 perfect.org。