SQLite.swift简单实用笔记

前端之家收集整理的这篇文章主要介绍了SQLite.swift简单实用笔记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

  • 简单的查询和参数绑定接口
  • 安全、自动类型数据访问
  • 隐式提交和回滚接口
  • 开发者友好的错误处理和调试
  • 文档完善
  • 通过广泛测试
  1. //pod引入,导入头文件
  2. import sqlite
  3.  
  4. /// 创建一个路径保存数据库文件
  5. let path = NSSearchPathForDirectoriesInDomains(.documentDirectory,.userDomainMask,true)[0]
  6. let db = try? Connection("\(path)/czb.sqlite3")
  7. /// 创建表结构
  8. let user = Table("user")
  9. let id = Expression<Int64>("id")
  10. let name = Expression<String?>("name")
  11. let email = Expression<String>("email")
  12. //创建数据库插入对应的列
  13. try? db?.run(user.create(ifNotExists: true,block: { (t) in
  14. t.column(id,primaryKey: true)
  15. t.column(name)
  16. t.column(email)
  17. }))
  18. ///插入数据
  19. // let insert = user.insert(name <- "walden",email <- "walden@126.com")
  20. // let rowId = try? db?.run(insert)
  21. // let insert2 = user.insert(name <- "Amazing7",email <- "360898864@qq.com")
  22. // let rowid2 = (try! db?.run(insert2))!
  23. /// 查询所有的数据
  24. if let users = try? db?.prepare(user) {
  25. for u in users! {
  26. print("\tid:\(u[id]),name: \(u[name]),email: \(u[email])")
  27. }
  28. }
  29. // 修改数据
  30. let update = user.filter(id == 2)
  31. try? db?.run(update.update(email <- "hahahaha@qq.com"))
  32. if let users = try? db?.prepare(user) {
  33. for u in users! {
  34. print("\tid:\(u[id]),email: \(u[email])")
  35. }
  36. }
  37. //删除一条数据
  38. try? db?.run(user.filter(id == 2).delete())
  39. print(path)
  40. //根据表名字和数据库位置获取表所有的列
  41. let tb = Table.init("user",database: "\(path)/czb.sqlite3")
  42. if let tb = try? db?.prepare(user) {
  43. for u in tb! {
  44. print("\tid:\(u[id]),email: \(u[email])")
  45. }
  46. }
  47. /// 筛选和查询
  48. let query = tb.select(email) //select "email" from user
  49. .filter(name != nil) //where "name" is not ull
  50. .order(email.desc,name) //order by "email" desc,name
  51. .limit(5,offset: 3) //limit 5 offset 3
  52. /*
  53. 数据转换
  54.  
  55. 这个时候单纯的table是不够用了,作者就把方法写到了db里面。
  56.  
  57. scalar:聚合,用来获得对应想要的数值,一般用于获得count,max,min,avg,sum,totle等
  58. prepare:获得所有元素值,然后使用for循环进行遍历(在for循环中,如果想要某个元素的值,你需要使用let idNum = item[id]id为column对象)
  59. pluck:获得一行,如果是选取了所有,那么获得第一行
  60. run:用来执行delete,update,insert,create语句
  61. trace:每次执行sql语句都要执行这里面的内容。(db.trace { print($0) }在执行db的所有方法前,使用这句,会在每次执行的时候都输出SQL语句)
  62. excuse:直接执行sql语句,为了方便写习惯了sql语句的人。
  63. */

猜你在找的Sqlite相关文章