SQLiteExpress 是一个 Swift 库,为 macOS 和 iOS 上的 SQLite3 C API 实现了轻量级封装库。 SQLiteExpress 提供了
这是在不改变 SQLite3 C API 的编程协议的情况下完成的。SQLiteExpress 不提供任何编写 SQL 语句方面的帮助,例如以类型安全的方式。如果需要此功能,其他 SQLite 封装库可能更适合。
以下代码片段展示了 SQLiteExpress 的使用方式。此代码片段执行以下操作
// Create a new in-memory database `db` and require extended errors to be thrown.
let db = try SQLiteDatabase(extendedErrors: true)
// Create a new table in `db`.
let stmt0 = try db.prepare(sql: """
CREATE TABLE Contacts (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
phone TEXT
);
""")
try stmt0.step()
stmt0.finalize()
// Enter two rows into the new table.
let stmt1 = try db.prepare(sql: """
INSERT INTO Contacts VALUES (?, ?, ?, ?);
""")
try stmt1.bind(integer: 1000, toParam: 1)
try stmt1.bind(text: "Mickey Mouse", toParam: 2)
try stmt1.bind(text: "mickey@disney.net", toParam: 3)
try stmt1.bind(text: "+1 101-123-456", toParam: 4)
try stmt1.step()
try stmt1.bind(integer: 1001, toParam: 1)
try stmt1.bind(text: "Donald Duck", toParam: 2)
try stmt1.bind(text: "donald@disney.net", toParam: 3)
try stmt1.bind(text: "+1 101-123-456", toParam: 4)
try stmt1.step()
stmt1.finalize()
// Cound the number of distinct phone numbers.
let stmt2 = try db.prepare(sql: """
SELECT COUNT(DISTINCT phone) FROM Contacts;
""")
try stmt2.step()
let phoneNumbers = try stmt2.int(atColumn: 0)
Swift.print("Number of distinct phone numbers: \(phoneNumbers)")
stmt2.finalize()
// Show all names and email addresses from the `Contacts` table.
let stmt3 = try db.prepare(sql: """
SELECT name, email FROM Contacts;
""")
Swift.print("Entries in table:")
while try !stmt3.step() {
Swift.print("\(try stmt3.text(atColumn: 0)!), \(try stmt3.text(atColumn: 1)!)")
}
stmt3.finalize()
执行时,代码会打印以下行
Number of distinct phone numbers: 1
Entries in table:
Mickey Mouse, mickey@disney.net
Donald Duck, donald@disney.net
构建 Swift SQLiteExpress 框架的组件需要以下技术
作者:Matthias Zenger (matthias@objecthub.net)
版权所有 © 2020 Google LLC。
请注意:这不是谷歌官方产品。