当前位置:   article > 正文

[快速学会Swift第三方库] SQLite.swift篇

libswiftsqllite3.framework

[快速学会Swift第三方库] SQLite.swift篇

SQLite.swift 是一个使用纯 Swift 语言封装 SQLite3 的操作框架。

特性:

  1. 简单的查询和参数绑定接口
  2. 安全、自动类型数据访问
  3. 隐式提交和回滚接口
  4. 开发者友好的错误处理和调试
  5. 文档完善
  6. 通过广泛测试
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

目录

编码之前

导入SQLite.swift

推荐使用CocoaPods进行导入,CocoaPods是一个负责管理iOS项目中第三方开源库的工具,安装CocoaPods之后使用命令行就能轻松地对所有第三方开源库进行安装和更新,而不需要每次上GitHub去下载。
CocoaPods的安装过程传送门:iOS 9 导入类库全面详尽过程(Ruby安装->CocoaPods安装->导入类库)
手动下载:GitHub-SQLite.swift主页

装好CocoaPods后,修改Podfile文件内容为如下:

  1. source 'https://github.com/CocoaPods/Specs.git'
  2. platform :ios, '9.0'
  3. use_frameworks!
  4. pod 'SQLite.swift', '~> 0.10.1'
  5. end
  6. xcodeproj 'Desktop/Web/Web.xcodeproj'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

target后面为工程名,最后一行为工程路径(这里的Web是我的工程名)

再执行命令:

$ pod install
  • 1

其他操作

在Target->工程名->Build Settings->Search Paths->User Header Search Paths处添加SQLite.swift所在的目录:

这里写图片描述

选择Target->工程名->Build Phases,在Link Binary With Libraries中添加 libsqlite3.tbd
在工程的bridging header中加入以下代码:

#import <sqlite3.h>
  • 1

最后在你需要用到SQLite.swift的类中加上:

import SQLite
  • 1

链接数据库

  1. let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
  2. let db = try? Connection("\(path)/db.sqlite3")
  • 1
  • 2

创建表

  1. let users = Table("users")
  2. let id = Expression<Int64>("id")
  3. let name = Expression<String?>("name")
  4. let email = Expression<String>("email")
  5. try! db?.run(users.create(ifNotExists: true, block: { (table) in
  6. table.column(id, primaryKey: true)
  7. table.column(name)
  8. table.column(email, unique: true)
  9. }))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

等价于执行SQL语句:

  1. CREATE TABLE IF NOT EXISTS "users" (
  2. "id" INTEGER PRIMARY KEY NOT NULL,
  3. "name" TEXT,
  4. "email" TEXT NOT NULL UNIQUE
  5. )
  • 1
  • 2
  • 3
  • 4
  • 5

插入数据

  1. let insert = users.insert(name <- "究极死胖兽", email <- "scuxiatian@foxmail.com")
  2. let rowid = (try! db?.run(insert))!
  3. let insert2 = users.insert(name <- "Amazing7", email <- "360898864@qq.com")
  4. let rowid2 = (try! db?.run(insert2))!
  • 1
  • 2
  • 3
  • 4

等价于执行SQL语句:

  1. insert into users (name,email) values('究极死胖兽','scuxiatian@foxmail.com')
  2. insert into users (name,email) values('Amazing7','360898864@qq.com')
  • 1
  • 2

查询数据

  1. for user in (try! db?.prepare(users))! {
  2. print("Query:id: \(user[id]), name: \(user[name]), email: \(user[email])")
  3. }
  • 1
  • 2
  • 3

等价于执行SQL语句:

SELECT * FROM users
  • 1

执行结果:

  1. Query:id: 1, name: Optional("究极死胖兽"), email: scuxiatian@foxmail.com
  2. Query:id: 2, name: Optional("Amazing7"), email: 360898864@qq.com
  • 1
  • 2

条件查询会在后面用到

修改数据

  1. let update = users.filter(id == rowid)
  2. try! db?.run(update.update(email <- email.replace("foxmail", with: "qq")))
  3. for user in (try! db?.prepare(users.filter(name == "究极死胖兽")))! {
  4. print("Update:id: \(user[id]), name: \(user[name]), email: \(user[email])")
  5. }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

等价于执行SQL语句:

  1. update users set email=replace(email,'foxmail','qq') where id == 1
  2. SELECT * FROM users where name='究极死胖兽'
  • 1
  • 2

执行结果:

Update:id: 1, name: Optional("究极死胖兽"), email: scuxiatian@qq.com
  • 1

删除数据

  1. try! db?.run(users.filter(id == rowid2).delete())
  2. for user in (try! db?.prepare(users))! {
  3. print("Delete:id: \(user[id]), name: \(user[name]), email: \(user[email])")
  4. }
  • 1
  • 2
  • 3
  • 4

等价于执行SQL语句:

  1. delete from users where id = 2
  2. SELECT * FROM users
  • 1
  • 2

执行结果(只剩下第一条记录):

Delete:id: 1, name: Optional("究极死胖兽"), email: scuxiatian@foxmail.com
  • 1
  • 2

深入学习

这里只列出了数据库的创建和最基本的增删改查操作,如果你希望能够更加深入地学习SQLite.swift,可以前往GitHub-SQLite.swift主页

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/814997
推荐阅读
相关标签
  

闽ICP备14008679号