您的位置:首页 > 移动开发 > Swift

SQLite.swift简单实用笔记

2017-11-09 00:00 134 查看
SQLite.swift其实就是sqlite3的高级封装,它提供一种更加友好的方式方便我们实用sqlite, 不需要沃恩直接书写sql语句,因此避免了不安全的数据访问等等. 用着还不错.

简单的查询和参数绑定接口

安全、自动类型数据访问

隐式提交和回滚接口

开发者友好的错误处理和调试

文档完善

通过广泛测试

//pod引入,导入头文件
import SQLite

/// 创建一个路径保存数据库文件
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let db = try? Connection("\(path)/czb.sqlite3")

/// 创建表结构
let user = Table("user")
let id = Expression<Int64>("id")
let name = Expression<String?>("name")
let email = Expression<String>("email")

//创建数据库插入对应的列
try? db?.run(user.create(ifNotExists: true, block: { (t) in
t.column(id, primaryKey: true)
t.column(name)
t.column(email)
}))

///插入数据
//        let insert = user.insert(name <- "walden", email <- "walden@126.com")
//        let rowId = try? db?.run(insert)
//        let insert2 = user.insert(name <- "Amazing7", email <- "360898864@qq.com")
//        let rowid2 = (try! db?.run(insert2))!

/// 查询所有的数据
if let users = try? db?.prepare(user) {
for u in users! {
print("\tid:\(u[id]), name: \(u[name]), email: \(u[email])")
}
}

// 修改数据
let update = user.filter(id == 2)
try? db?.run(update.update(email <- "hahahaha@qq.com"))
if let users = try? db?.prepare(user) {
for u in users! {
print("\tid:\(u[id]), name: \(u[name]), email: \(u[email])")
}
}

//删除一条数据
try? db?.run(user.filter(id == 2).delete())

print(path)

//根据表名字和数据库位置获取表所有的列
let tb = Table.init("user", database: "\(path)/czb.sqlite3")
if let tb = try? db?.prepare(user) {
for u in tb! {
print("\tid:\(u[id]), name: \(u[name]), email: \(u[email])")
}
}

/// 筛选和查询
let query = tb.select(email)    //select "email" from user
.filter(name != nil)        //where "name" is not ull
.order(email.desc, name)    //order by "email" desc, name
.limit(5, offset: 3)        //limit 5 offset 3
/*
数据转换

这个时候单纯的table是不够用了,作者就把方法写到了db里面。

scalar:聚合,用来获得对应想要的数值,一般用于获得count,max,min,avg,sum,totle等
prepare:获得所有元素值,然后使用for循环进行遍历(在for循环中,如果想要某个元素的值,你需要使用let idNum = item[id]id为column对象)
pluck:获得一行,如果是选取了所有,那么获得第一行
run:用来执行delete,update,insert,create语句
trace:每次执行sql语句都要执行这里面的内容。(db.trace { print($0) }在执行db的所有方法前,使用这句,会在每次执行的时候都输出sql语句)
excuse:直接执行SQL语句,为了方便写习惯了SQL语句的人。
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: