本文重点介绍两个方面,1、新增数据,2、获取自动增长 ID。

建立 Person.swift 数据模型

/// 个人模型
class Person: NSObject {// MARK: - 模型属性/// 代号var id: Int64 = 0/// 姓名var name: String?/// 年龄var age = 0/// 身高var height: Double = 0// MARK: - 构造函数init(dict: [String: AnyObject]) {super.init()setValuesForKeysWithDictionary(dict)}override var description: String {let keys = ["id", "name", "age", "height"]return dictionaryWithValuesForKeys(keys).description}// MARK: - 数据库操作方法}

新增记录

  • 在 Person 模型中添加以下代码
/// 将当前对象添加到数据库
///
/// - returns: 是否成功
func insertPerson() -> Bool {guard let name = name else {print("姓名不能为空")return false}let sql = "INSERT INTO T_Person (name, age, height) VALUES ('\(name)', \(age), \(height));"return SQLiteManager.sharedManager.execSQL(sql)
}
  • 在 ViewController 中增加测试代码
/// 测试插入数据
func demoInsert() {let p = Person(dict: ["name": "zhangsan", "age": 19, "height": 1.7])if p.insertPerson() {print("插入成功 \(p)")} else {print("插入失败")}
}

小结

  • 如果主键是自动增长的,在插入数据时,不需要指定
  • 字符串类型的属性,需要使用单引号

问题:如何获取自动增长的主键数值?

  • 在 SQLiteManager 中增加函数 execInsert
/// 执行插入 SQL
///
/// - parameter sql: sql
///
/// - returns: 返回自动增长 id
func execInsert(sql: String) -> Int64 {if !execSQL(sql) {return -1}// 返回自动增长 idreturn Int64(sqlite3_last_insert_rowid(db))
}
  • 修改 insertPerson() 函数
/// 将当前对象插入到数据库
///
/// - returns: 是否成功
func insertPerson() -> Bool {// 0. 断言姓名不为 nilassert(name != nil, "姓名不能为 nil")// 1. 准备 SQLlet sql = "INSERT INTO T_Person (name, age, height) VALUES ('\(name!)', \(age), \(height));"// 2. 获得自动增长 idid = SQLiteManager.sharedManager.execInsert(sql)return id > 0
}
  • 使用 sqlite3_last_insert_rowid 可以获得自动增长的主键值

Swift 中使用 SQLite——新增数据相关推荐

  1. Swift 中使用 SQLite——查询数据

    本文主要介绍如何查询 SQLite 结果集,以及封装 SQLite 的操作方法. 准备测试代码 /// 从数据库中加载 person 数组 class func persons() -> [Pe ...

  2. Swift 中使用 SQLite——批量更新(事务处理)

    本文是Swift 中使用 SQLite系列的收官之作,介绍一下在数据库中的批量更新. 事务 在准备做大规模数据操作前,首先开启一个事务,保存操作前的数据库的状态 开始数据操作 如果数据操作成功,提交事 ...

  3. Swift 中使用 SQLite——打开数据库

    关于Swift中使用SQLite,接下来可能会分别从打开.增.删.改.查,几个方面来介绍SQLite的具体使用,这一篇重点介绍一下如何打开. 定义全局数据库访问句柄 /// 全局数据库访问句柄 pri ...

  4. Swift 中使用 SQLite——修改和删除数据

    本文主要介绍在SQLite中修改数据.删除数据: 更新记录 /// 将当前对象信息更新到数据库 /// /// - returns: 是否成功 func updatePerson() -> Bo ...

  5. Swift语言中如何使用JSON数据教程

    原文:Swift语言中如何使用JSON数据教程 这是一篇翻译文章,原文出处:http://www.raywenderlich.com/82706/working-with-json-in-swift- ...

  6. Swift中的数据存储

    Swift中的数据存储 1.NSUserDefault 用于保存一些用户名密码等,用户下次登录不用重复填写用户名密码 2.SSKeyChain 用于保存设备的唯一ID,用户卸载APP并重装后,保证设备 ...

  7. android中保存多行数据,Android使用SQLite数据库存数数据

    Android使用SQLite数据库存数数据 前面我们介绍了用 SharedPreferences 和文件存储信息的方法,但是当频繁大量地使用数据存储时,就要用到数据库来管理信息数据. 在 Andro ...

  8. 创建商品表中插入一条数据/图书表中新增一条记录/学生表中,要求查询姓张,并且年龄在18到25岁之间的学生/查询article文章表

    在以上创建的商品表中插入一条数据:名称为"学生书包".价格18.91.库存101.描述为空 在图书表中新增一条记录:Java核心技术.作者"Cay S. Horstman ...

  9. sqlite复制数据主键重复_Flutter 数据库指南

    最近一段时间,在学 Flutter,打算把自己写过的项目 HOO 用 Flutter 实现. 里面用到了一些数据库的知识,正好这周我在组内也是分享的SQLite,所以我们就来聊一聊 SQLite 的基 ...

最新文章

  1. 使用JavaScript在文本框中的Enter键上触发按钮单击
  2. 远程linux服务器mysql数据库导入和导出.sql文件
  3. FIELD-SYMBOLS详解
  4. 黄聪:wordpress如何开启文章格式post format
  5. 创建虚拟磁盘的小工具软件plainmaker.exe
  6. 简单易懂设计模式——简单工厂模式
  7. RS232和RS485
  8. 深度linux不能联网,Deepin Linux 无法上网
  9. 节点操作大全(二)~操作节点的属性
  10. openEuler 高校开发者大赛报名启动!广阔天地,码出不凡
  11. 当synchronized遇上integer
  12. 外螺纹对照表_螺纹符号对照表[1]
  13. mailgun php版本,使用 PHP mailgun 发送邮件
  14. android generated java files,Android protobuf-javalite 实践
  15. 2020年中级数据库系统工程师考试笔记9—SQL语言
  16. 单绞机控制算法模型(Simulink仿真)
  17. 详细讲解MySQL索引与联合索引
  18. linux脚本创建快捷方式,批处理BAT创建快捷方式
  19. Object.setPrototypeOf 与 Object.create() 的区别
  20. R basics: R语言修改默认显示语言

热门文章

  1. 上传图片,要求图片200100象素,大小小于2M
  2. select,epoll,poll比较
  3. Windows客户端C/C++编程规范“建议”——前言
  4. 【C++】C++11 STL算法(四):二分查找法(Binary search operations)、合并操作
  5. 【linux】在CentOS7上更改端口号时报错:Job for sshd.service failed because the control process exited with error
  6. matlab文档型数据导入,MATLAB-数据导入
  7. js室内地图开发_如何使用JS来开发室内三维地图的轨迹回放功能
  8. ios cocopods 安装使用及高级教程
  9. iOS提示气泡,带动画
  10. iOS - APP任意push新页面那些事