Swift 中使用 SQLite——修改和删除数据
本文主要介绍在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
获取影响数据行数
相关文章:

用python3实现指定目录下文件sha256及文件大小统计
有时会统计某个目录下有哪些文件,每个文件的sha256及文件大小等相关信息,这里用python3写了个脚本用来实现此功能,此脚本可跨平台,同时支持windows和linux,脚本(get_dir_file_info.py)内容如下: import os…

Swift 中使用 SQLite——新增数据
本文重点介绍两个方面,1、新增数据,2、获取自动增长 ID。 建立 Person.swift 数据模型 /// 个人模型 class Person: NSObject {// MARK: - 模型属性/// 代号var id: Int64 0/// 姓名var name: String?/// 年龄var age 0/// 身高var height: Double …

投稿2877篇,EMNLP 2019公布4篇最佳论文
整理 | AI科技大本营(ID:rgznai100)近日,自然语言处理领域的顶级会议之一EMNLP 2019公布了年度最佳论文。EMNLP是由国际语言学会(ACL)下属的SIGDAT小组主办的自然语言处理领域的顶级国际会议,是自然语言算法…

对象检测工具包mmdetection简介、安装及测试代码
mmdetection是商汤和港中文大学联合开源的基于PyTorch的对象检测工具包,属于香港中文大学多媒体实验室open-mmlab项目的一部分。该工具包提供了已公开发表的多种流行的检测组件,通过这些组件的组合可以迅速搭建出各种检测框架。 mmdetection主要特性&am…

(转)eclipse 代码自动补全
转自:http://blog.csdn.net/yushuwai2010/article/details/11856129 一般默认情况下,Eclipse的代码提示功能是比MicrosoftVisualStudio的差很多的,主要是Eclipse本身有很多选项是默认关闭的,要开发者自己去手动配置。如果开发者不…

swift 多线程GCD和延时调用
GCD 是一种非常方便的使用多线程的方式。通过使用 GCD,我们可以在确保尽量简单的语法的前提下进行灵活的多线程编程。在 “复杂必死” 的多线程编程中,保持简单就是避免错误的金科玉律。好消息是在 Swift 中是可以无缝使用 GCD 的 API 的,而且…

目标检测算法Faster R-CNN简介
在博文https://blog.csdn.net/fengbingchun/article/details/87091740 中对Fast R-CNN进行了简单介绍,这里在Fast R-CNN的基础上简单介绍下Faster R-CNN。 目标检测领域从R-CNN开始,通过引入卷积神经网络取得了很多突破性的进展,但是始终未能…

ICCV 2019 | 加一个任务路由让数百个任务同时跑起来,怎么做到?
作者 | Gjorgji Strezoski, Nanne van Noord, Marcel Worring 译者 | 中国海洋大学李杰 出品 | AI科技大本营(ID:rgznai100)摘要传统的多任务(MTL)学习方法依赖于架构调整和大型可训练参数集来联合优化多个任务。但是,…

DEV开发之控件NavBarControl
右键点击RunDesigner弹出如下界面鼠标先点击3或4,1,,然后点击1或2进行相应的新增或删除操作,3是分组,4是项目,4可以直接拖动到相应的分组3.属性caption:显示的名称4.NavBarControl 属性 PaintStyleName绘画风格&…

swift支持多线程操作数据库类库-CoreDataManager
类库方法 获取数据 executeFetchRequest(request:) 同步获取数据 var request: NSFetchRequest NSFetchRequest(entityName: "MonkeyEntity")var myMonkeys:NSArray? CoreDataManager.shared.executeFetchRequest(request)异步获取数据 executeFetchRequest(re…

目标检测(或分隔)算法Mask R-CNN简介
在博文https://blog.csdn.net/fengbingchun/article/details/87195597 中对Faster R-CNN进行了简单介绍,这里在Faster R-CNN的基础上简单介绍下Mask R-CNN。 Mask R-CNN是faster R-CNN的扩展形式,能够有效地检测图像中的目标,并且Mask R-CNN…

未来之城,管理者可能不是人......
大会官网 https://t.csdnimg.cn/KSTh2010 年,IBM 正式提出了“智慧地球”愿景。在 IBM 的设想中,智慧城市应该由六个核心系统组成:组织(人)、业务/政务、交通、通讯、水和能源。(图源 | IBM 官网࿰…

UVa 10701 - Pre, in and post
题目:已知树的前根序,中根序遍历转化成后根序遍历。 分析:递归,DS。依据定义递归求解就可以。 前根序:根,左子树,右子树; 中根序:左子树,根,右子树…

图像集存储成MNIST数据集格式实现
有时会用到将一组图像存放成MNIST中那样的数据格式,以便于用于网络的训练和测试,如MNSIT中的测试集标签t10k-labels.idx1-ubyte和测试集图像t10k-images.idx3-ubyte,各包含了10000个样本,这里以此两个测试集为例详细说明下实现过程…

ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
原来定位服务是10分钟收不到定位信息就挂起定位,现在变为最短3分钟,估计都是为了省电吧。只要你开启应用的后台定位,并且10分钟有一次定位,那么苹果就不会关闭你的线程,现在变成3分钟。若你的应用开启了后台定位&#…

程序员必知的20个Python技巧
作者 | Duomly 译者 | 弯月,编辑 | 郭芮 出品 | CSDN(ID:CSDNnews)Python是一门流行且应用广泛的通用编程语言,其应用包括数据科学、机器学习、科学计算等领域,以及后端Web开发、移动和桌面应用程序等方面。…

CSS float浮动的深入研究、详解及拓展(二)
为什么80%的码农都做不了架构师?>>> 接上回… 五、浮动的非本职工作 浮动的本职工作是让匿名inline boxes性质的文字环绕图片显示,而其他所有用浮动实现的效果都不是浮动应该做的事情,我称之为“非本职工作”。 或许我们并没有…

不需要显示地图 就获得用户当前经纬度 超简单的方法
1.遵循协议 CLLocationManagerDelegate,AMapSearchDelegate,AMapLocationManagerDelegate 2. API MAMapServices.sharedServices().apiKey APIKey AMapLocationServices.sharedServices().apiKey APIKey AMapSearchServices.sharedServices().apiKey APIKey AMapNaviService…

ELECTRA:超越BERT,2019年最佳NLP预训练模型
作者 | 李如来源 | NLPCAB(ID:rgznai100)【导读】BERT推出这一年来,除了XLNet,其他的改进都没带来太多惊喜,无非是越堆越大的模型和数据,以及动辄1024块TPU,让工程师们不知道如何落地。今天要介…

安装node和spm过程
2019独角兽企业重金招聘Python工程师标准>>> 安装nodejs 官网下载nodejs,我下的是v0.10.33版本,安装到d:\nodejs下。 1.新建目录d:\nodejs,在其中建立node_cache、node_global、node_modules三个目录。 2,将C:\Users…

经典网络LeNet-5介绍及代码测试(Caffe, MNIST, C++)
LeNet-5:包含7个层(layer),如下图所示:输入层没有计算在内,输入图像大小为32*32*1,是针对灰度图进行训练和预测的。论文名字为” Gradient-Based Learning Applied to Document Recognition”,可以直接从ht…

根据经纬度获取用户当前位置信息
根据上篇文章获取的经纬度获取用户当前的位置信息 //获取用户所在位置信息ADDRESS func getUserAddress() { let latitude : CLLocationDegrees LATITUDES! let longitude : CLLocationDegrees LONGITUDES! print("latitude:\(latitude)") print("longitude…

刷了几千道算法题,我私藏的刷题网站都在这里了
作者 | Rocky0429 来源 | Python空间(ID: Devtogether)遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活...然而我是谁,我可是死狗中的战斗鸡,智力不够…
js实现点击li标签弹出其索引值
据说这是一道笔试题,以下是代码,没什么要文字叙述的,就是点击哪个<li>弹出哪个<li>的索引值即可: <html> <head> <style> li{width:50px;height:30px;margin:5px;float:left;text-align: center;li…

定时器开启和关闭
写程序时遇见了定时器,需要写入数据库用户的经纬 ,还要读取,写好之后发现很费电 总结原因: 1:地图定位耗电(这个根据程序要求,不能关闭,需要实时定位,很无奈ÿ…

一览群智胡健:在中国完全照搬Palantir模式,这不现实
作者 | Just出品 | AI科技大本营(ID:rgznai100)神秘的硅谷大数据挖掘公司 Palantir 是国内众多创业公司看齐的标杆,其业务是为政府和金融领域的大客户提供数据分析服务,帮助客户作出判断,甚至“预知未来”,…

ImageNet图像数据集介绍
ImageNet图像数据集始于2009年,当时李飞飞教授等在CVPR2009上发表了一篇名为《ImageNet: A Large-Scale Hierarchical Image Database》的论文,之后就是基于ImageNet数据集的7届ImageNet挑战赛(2010年开始),2017年后,ImageNet由Ka…

cocos2dx 场景的切换
我们知道cocos2dx中可以由多个场景组成,那么我是如何来切换场景的呢首先我们先新建一个新的场景类,我推荐的方式是,在你工程的目录中找到一个classes的文件夹,里面有AppDelegate.cpp和AppDelegate.h还有HelloWorldScene.cpp和Hell…

IOS 后台挂起程序 当程序到后台后,继续完成定位任务
// 当应用程序掉到后台时,执行该方法 - (void)applicationDidEnterBackground:(UIApplication *)application { } 当一个 iOS 应用被送到后台,它的主线程会被暂停。你用 NSThread 的 detachNewThreadSelector:toTar get:withObject:类方法创建的线程也被挂起了。 我…

任正非:华为5G是瞎猫碰死老鼠
喜欢话糙理不糙的任正非,又飙金句。11月6日,在和彭博社记者对话时,谈到华为5G,他说:“回顾这个过程,我们也没有什么必胜的信心,有时候也是瞎猫碰上了死老鼠,刚好碰上世界是这个需求。…