在 Swift 中使用 SQLite 數(shù)據(jù)庫可以通過 SQLite.swift 這個第三方庫來實現(xiàn)俱病。SQLite.swift 提供了類型安全的 SQL 查詢語句和操作,使得在 Swift 中使用 SQLite 數(shù)據(jù)庫變得更加簡單和安全袱结。
下面是一個簡單的使用 SQLite.swift 進行數(shù)據(jù)庫操作的例子亮隙。首先需要在項目中導(dǎo)入 SQLite.swift 庫,可以通過 CocoaPods 或者手動導(dǎo)入的方式垢夹。
在代碼中溢吻,首先需要定義一個 Connection
對象來連接數(shù)據(jù)庫,然后定義一個 Table
對象來表示數(shù)據(jù)庫中的一張表果元。接著促王,定義一個 Person
結(jié)構(gòu)體來表示人員信息,然后將該結(jié)構(gòu)體和表格進行關(guān)聯(lián)而晒,即定義一個 Table<Person>
對象來表示該表格的數(shù)據(jù)類型為 Person
蝇狼。
import SQLite
let db = try! Connection("/path/to/db.sqlite3")
struct Person {
let id: Int64
let name: String
let age: Int
}
let persons = Table("persons")
let id = Expression<Int64>("id")
let name = Expression<String>("name")
let age = Expression<Int>("age")
try db.run(persons.create { t in
t.column(id, primaryKey: true)
t.column(name)
t.column(age)
})
try db.run(persons.insert(name <- "Tom", age <- 18))
try db.run(persons.insert(name <- "Jerry", age <- 20))
for person in try db.prepare(persons) {
print("id: \(person[id]), name: \(person[name]), age: \(person[age])")
}
以上代碼的作用是創(chuàng)建一個名為 persons
的表格,并向其中插入兩個人員信息欣硼。然后通過 prepare
方法查詢表格中的所有人員信息题翰,并輸出到控制臺恶阴。
封裝工具類
import SQLite
class SQLiteManager {
static let shared = SQLiteManager()
private let db: Connection?
private let persons = Table("persons")
private let id = Expression<Int64>("id")
private let name = Expression<String>("name")
private let age = Expression<Int>("age")
private init() {
do {
db = try Connection("/path/to/db.sqlite3")
createTable()
} catch {
db = nil
print("Unable to open database")
}
}
func createTable() {
do {
try db?.run(persons.create { t in
t.column(id, primaryKey: true)
t.column(name)
t.column(age)
})
} catch {
print("Unable to create table")
}
}
func insertPerson(name: String, age: Int) {
do {
let insert = persons.insert(self.name <- name, self.age <- age)
try db?.run(insert)
} catch {
print("Unable to insert person")
}
}
func getAllPersons() -> [Person] {
var persons = [Person]()
do {
for person in try db!.prepare(self.persons) {
persons.append(Person(id: person[self.id], name: person[self.name], age: person[self.age]))
}
} catch {
print("Unable to get persons")
}
return persons
}
}
在上述代碼中,我們創(chuàng)建了一個名為 SQLiteManager
的單例類豹障,其中包含了數(shù)據(jù)庫連接冯事、表格定義以及對表格的增刪改查等操作。通過定義這個工具類血公,我們可以在其他部分通過調(diào)用工具類中的方法來實現(xiàn)數(shù)據(jù)庫操作昵仅,從而簡化了代碼的編寫和維護。
使用這個工具類時累魔,可以通過以下方式來進行數(shù)據(jù)庫操作:
let manager = SQLiteManager.shared
// 創(chuàng)建表格
manager.createTable()
// 插入數(shù)據(jù)
manager.insertPerson(name: "Tom", age: 18)
// 查詢數(shù)據(jù)
let persons = manager.getAllPersons()
for person in persons {
print("id: \(person.id), name: \(person.name), age: \(person.age)")
}
通過使用這個工具類摔笤,我們可以更加方便和安全地進行數(shù)據(jù)庫操作。同時垦写,這個工具類也可以根據(jù)實際需求進行擴展和修改吕世,以滿足不同的業(yè)務(wù)需求。