本文主要介绍在SQLite中修改数据、删除数据:

  • 更新记录
/// 将当前对象信息更新到数据库
///
/// - returns: 是否成功
func updatePerson() -> Bool {guard let name = name else {print("姓名不能为空")return false}if id <= 0 {print("id 不正确")return false}let sql = "UPDATE T_Person set name = '\(name)', age = \(age), height = \(height) \n" +"WHERE id = \(id);"return SQLiteManager.sharedManager.execSQL(sql)
}
  • 删除记录
/// 将当前对象从数据库中删除
///
/// - returns: 是否成功
func deletePerson() -> Bool {if id <= 0 {print("id 不正确")return false}let sql = "DELETE FROM T_Person WHERE id = \(id);"return SQLiteManager.sharedManager.execSQL(sql)
}
  • 测试代码
/// 测试更新数据
private func demoUpdate() {let p = Person(dict: ["id": 3000, "name": "老王", "age": 108, "height": 1.7])if p.updatePerson() {print("更新成功 \(p)")} else {print("更新失败")}
}/// 测试删除数据
private func demoDelete() {let p = Person(dict: ["id": 3000, "name": "老王", "age": 108, "height": 1.7])if p.deletePerson() {print("删除成功 \(p)")} else {print("删除失败")}
}

小结

  • 创表 / 新增 / 修改 / 删除 本质上都是执行一条 SQL 指令
  • 删除记录时,如果数据不存在,不会返回错误
  • 更新记录时,如果指定的 id 不存在,不会返回错误

数据操作方法扩展

  • 增加 execUpdate 函数
/// 执行 更新 / 删除 SQL
///
/// - parameter sql: sql
///
/// - returns: 返回 更新 / 删除 的数据行数
func execUpdate(sql: String) -> Int {if !execSQL(sql) {return -1}// 返回影响的数据行数return Int(sqlite3_changes(db))
}
  • 修改更新和删除按钮,再次测试
/// 将当前对象从数据库中删除
///
/// - returns: 是否成功
func deletePerson() -> Bool {if id <= 0 {print("id 不正确")return false}let sql = "DELETE FROM T_Person WHERE id = \(id);"return SQLiteManager.sharedManager.execUpdate(sql) > 0
}/// 将当前对象信息更新到数据库
///
/// - returns: 是否成功
func updatePerson() -> Bool {guard let name = name else {print("姓名不能为空")return false}if id <= 0 {print("id 不正确")return false}let sql = "UPDATE T_Person set name = '\(name)', age = \(age), height = \(height) \n" +"WHERE id = \(id);"return SQLiteManager.sharedManager.execUpdate(sql) > 0
}

备注

  • 新增记录可以使用 sqlite3_last_insert_rowid 获取最后插入的主键数值
  • 更新 / 删除记录可以使用 sqlite3_changes 获取影响数据行数

Swift 中使用 SQLite——修改和删除数据相关推荐

  1. 视图操作 第3关:在视图中插入、修改、删除数据

    任务描述 本关任务: 相关知识 为了完成本关任务,你需要掌握: 1.创建视图 2.插入数据 3.更新数据 4.删除数据 语法 1.使用CREATE VIEW语句创建视图 语法格式: CREATE [O ...

  2. sqlite数据类型、关键词及创建、修改、删除数据表

    //摘自:http://www.cnblogs.com/caizhimin816/articles/1885290.html 谢谢! sqlite数据类型.关键词及创建.修改.删除数据表 Posted ...

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

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

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

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

  5. 数据库(概念、语法、DBMS、SQL语言:创建数据库、表格,添加、修改、删除数据记录)...

    关系型数据库:以表作为实体,以主键和外键关系作为联系的一种数据结构. 主键:在关系型数据库中,用一个唯一的标识符来标志每一行,这个标识符就是主键.主键有两个特点:非空和不能重复. 外键:在关系型数据库 ...

  6. vs2010 mysql linq to sql 系列_LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据...

    LINQ和 LINQ to SQL 都已经不是一个新事物了,但是我接触的比较晚,本着绝知此事要躬行的态度,决定写这个系列. 本文使用的测试环境是VS 2010,和sql server 2005数据库. ...

  7. Python Flask实现修改和删除数据

    Python Flask实现修改和删除数据 上一篇文章写了查询和添加数据,这篇文章继续写修改和删除数据. 查询和添加数据参考: https://blog.csdn.net/weixin_4379027 ...

  8. LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据

    LINQ和 LINQ to SQL 都已经不是一个新事物了,但是我接触的比较晚,本着绝知此事要躬行的态度,决定写这个系列. 本文使用的测试环境是VS 2010,和sql server 2005数据库. ...

  9. SqlService基础一篇搞定(建库建表、插入数据、修改和删除数据、基础查询、条件查询、模糊查询、聚合函数、分组查询、多表查询)

    SqlService基础知识总汇 前言 一.SQLSERVER建库建表 1.检查数据库名是否存在 2.创建数据库 3.建表 4.修改表结构 5.删除添加约束 二.SQLSERVER插入数据 1.向部门 ...

最新文章

  1. (20/24) webpack实战技巧:watch实现热打包和添加代码备注
  2. java中new BigDecimal的坑
  3. 从LXMERT到VLMO:多模态预训练模型的演变史
  4. win10安装ensp启动40_装系统不求人,快速制作启动U盘,傻瓜式重装WIN10
  5. 《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》
  6. mysql写php木马_PHP一句话木马小总结与SQL语句写一句话木马
  7. 什么是Git最好的视觉合并工具? [关闭]
  8. java cookie 永久_java web中cookie的永久创建与撤销
  9. AngularJs(Part 3)--注册服务
  10. Android Studio 自定义字体显示英文音标
  11. 【python】正则表达式re模块
  12. python上传文件
  13. ffmpeg推流和拉流rtsp
  14. 天涯红旗linux,红旗linux安装中的几点技巧(转载)
  15. 网页中插入FLASH的三种方法
  16. 父级fixed_相对于父元素的fixed定位的实现
  17. 【控制control】机械臂运动学、动力学模型
  18. 忘记svn密码怎么办
  19. Android中设置定时闹钟以及AlarmManager详解
  20. 纪委计算机管理制度,纪委保密制度

热门文章

  1. 在DataGrid中显示图片
  2. ASP.net 中的页面继承实现和通用页面的工厂模式的实现
  3. Java动态加载一个类的几种方法以及invoke
  4. linux环境insight安装与使用
  5. TeamViewer介绍:远程控制计算机
  6. 提高C++性能的编程技术笔记:引用计数+测试代码
  7. java振动数据压缩_【数据结构-Java】最佳实践-数据压缩(使用赫夫曼树)
  8. ai 临摹图片换背景_AI临摹绘制插画图片
  9. 24点游戏c语言链表做法,C语言实现24点程序(示例代码)
  10. 基于python的压测工具_Python Locust性能测试简介及框架实践