加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite.swift简单实用笔记

发布时间:2020-12-12 19:17:35 所属栏目:百科 来源:网络整理
导读:SQLite.swift其实就是sqlite3的高级封装,它提供一种更加友好的方式方便我们实用sqlite,不需要沃恩直接书写sql语句,因此避免了不安全的数据访问等等. 用着还不错. 简单的查询和参数绑定接口 安全、自动类型数据访问 隐式提交和回滚接口 开发者友好的错误处理

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]),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]),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语句的人。
        */

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读