iOS开发 - 第三方 SQLite.swift

外国大神写的 SQLite.swift

大家可以去看下 github 的使用说明,无需SQL语句即可方便使用..
下面简单在大神的SQLite.Swift库上封装下,方便简单使用
只是使用 三个列表数 id name email ,大家可以根据需求对这个结构体进行自定义...

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()
    }
    
    //创建数据库文件
    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) }
    }
    
    //插入数据
    func insertData(_name: String, _email: String){
        do {
            let insert = users.insert(name <- _name, email <- _email)
            try db.run(insert)
        } catch {
            print(error)
        }
    }
    
    //读取数据
    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
    }
    
    //更新数据
    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)
        }
        
    }
    
    //删除数据
    func delData(userId: Int64) {
        let currUser = users.filter(id == userId)
        do {
            try db.run(currUser.delete())
        } catch {
            print(error)
        }
    }
}

使用:

    let sqliteContext = SQLiteManager() //如果没有,默认创建数据库及表格
    //插入数据
    sqliteContext.insertData("username", _email: "email@126.com")
    //读取全部数据
    //要想读取指定数据,可以自己自定义转换成其他模型,比如字典+元组,可以根据id查找
    let dataM = sqliteContext.readData()
    print(dataM) 
    //更新数据 1 -> 用户id
    sqliteContext.updateData(1, old_name: "oldValue", new_name: "newValue")
    //删除数据
    sqliteContext.delData(1) // 1 -> 用户id
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,590评论 7 249
  • native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)...
    时待吾阅读 591评论 0 2
  • “恭喜陕西朱老爷喜得睢临绝笔一幅,恭喜恭喜。”董掌柜随即请上第二件宝贝,“接下来登场的是隆兴皇帝时期张清研老先...
    筱辞1988阅读 312评论 2 2
  • 当我有了行动力的时候,我发现我会特别幸运。 比如今天,我刚到市公司的时候,坐着电梯,到了所在的楼层,电梯门打开的时...
    67fbaec5208f阅读 281评论 0 0
  • 上午打坐,,1.头上有一颗很大的水晶球,四射放光。2.丹田双手托住一颗白色的水晶球,不大,说是水晶丹。3....
    许大本阅读 228评论 0 0