外國大神寫的 SQLite.swift
大家可以去看下 github 的使用說明,無需SQL語句即可方便使用..
下面簡單在大神的SQLite.Swift庫上封裝下,方便簡單使用
只是使用 三個列表數(shù) id name email ,大家可以根據(jù)需求對這個結(jié)構(gòu)體進(jìn)行自定義...
import UIKit
import SQLite
struct SQLiteManager {
private var db: Connection!
private let users = Table("users") //表名
private let id = Expression<Int64>("id") //主鍵
private let name = Expression<String>("name") //列表1
private let email = Expression<String>("email") //列表2
init() {
createdsqlite3()
}
//創(chuàng)建數(shù)據(jù)庫文件
mutating func createdsqlite3(filePath: String = "/Documents") {
let sqlFilePath = NSHomeDirectory() + filePath + "/db.sqlite3"
do {
db = try Connection(sqlFilePath)
try db.run(users.create { t in
t.column(id, primaryKey: true)
t.column(name)
t.column(email, unique: true)
})
} catch { print(error) }
}
//插入數(shù)據(jù)
func insertData(_name: String, _email: String){
do {
let insert = users.insert(name <- _name, email <- _email)
try db.run(insert)
} catch {
print(error)
}
}
//讀取數(shù)據(jù)
func readData() -> [(id: String, name: String, email: String)] {
var userData = (id: "", name: "", email: "")
var userDataArr = [userData]
for user in try! db.prepare(users) {
userData.id = String(user[id])
userData.name = user[name]
userData.email = user[email]
userDataArr.append(userData)
}
return userDataArr
}
//更新數(shù)據(jù)
func updateData(userId: Int64, old_name: String, new_name: String) {
let currUser = users.filter(id == userId)
do {
try db.run(currUser.update(name <- name.replace(old_name, with: new_name)))
} catch {
print(error)
}
}
//刪除數(shù)據(jù)
func delData(userId: Int64) {
let currUser = users.filter(id == userId)
do {
try db.run(currUser.delete())
} catch {
print(error)
}
}
}
使用:
let sqliteContext = SQLiteManager() //如果沒有,默認(rèn)創(chuàng)建數(shù)據(jù)庫及表格
//插入數(shù)據(jù)
sqliteContext.insertData("username", _email: "email@126.com")
//讀取全部數(shù)據(jù)
//要想讀取指定數(shù)據(jù),可以自己自定義轉(zhuǎn)換成其他模型,比如字典+元組,可以根據(jù)id查找
let dataM = sqliteContext.readData()
print(dataM)
//更新數(shù)據(jù) 1 -> 用戶id
sqliteContext.updateData(1, old_name: "oldValue", new_name: "newValue")
//刪除數(shù)據(jù)
sqliteContext.delData(1) // 1 -> 用戶id