在iOS中,主要有5种数据缓存的策略:

1、plist

2、归档

3、偏好设置

4、沙盒文件

5、"SQLite数据库"

其中,"SQLite数据库" 是最常用的数据缓存方式,在开发中,在无网络的状态下,数据库常常发挥着非常大的作用!

系统提供的数据存储方式的弊端 :

1)不方便操作大量的数据

- 系统提供的数据存储方式都是覆盖存储的,新的数据会覆盖旧的数据.而且当数据量非常大时,如果要添加新的数据,必须先把旧数据全部加载到内存中

2)不方便查找大量的数据

- 当数据量非常庞大时,要查询其中某些数据,就非常困难。

而数据库可以轻松解决以上弊端~

存储方式:(类比于Excel表格)

"Excel"                                           "SQLite"

- 创建Excel文件                   - 创建一个数据库文件

- 创建表                                - 创建表

- 确定表头                            - 创建数据库的字段名(Excel表头),并指定数据类型

- 对Excel表进行数据操作    - 对数据库进行增删改查

FMDB的使用流程:

简单介绍:FMDB 是一个操作数据库的第三方框架,并且支持多线程环境下的操作,也是需要手动导入'libsqlite3.0.tbd'库,以OC的方式封装了SQLite的C语言API。方便灵活并且线程安全。

"FMDatabase" : 单线程;"FMDatabaseQueue" : 多线程;"FMResultSet" : 查询的结果集。

1、创建数据库单例对象(一个数据库可以存在多个表)

2、创建数据库储存路径

3、创建表

4、对表格进行增删改查等操作

上代码:

1、创建数据库单例对象,如图1

图1

注意:创建单例的原因是保证数据库队列只创建一次,全局只有一个串行队列,这样操作数据更安全。

2、创建数据库路径和表格,如图 2

图2

解析:单引号‘’中为表格的字段名,逗号后面为字段所属类型,字段类型是整形就用interger,字符串就用text。

注意:主键要想实现自动增长,不能是text类型。

3、进行数据库操作 ---增删改查

提示:建表,增删改 操作都是方法 "[_db executeUpdate]"或者"[_db executeStatements]",查询是另外的方法 "[_db executeQuery]"  。星号(*)是选取所有列的快捷方式。SQL 语句对大小写不敏感。SELECT 等效于 select。

1 ) INSERT INTO

INSERT INTO 语句用于向表格中插入新的行。

语法:INSERT INTO 表名称 VALUES (值1, 值2,....)

也可以向指定的列插入数据:INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

将数据写入表格,如图3

图3

图4

注意:在写入数据时候注意先判断是否存在!如图4

注意!请注意:

1)列名称和值名称的顺序要一一对应!例如:列名banner要对应自己的类型text。

2)如果列名类型是NSString,则需要加单引号 ‘’ 括住,例如:'%@',只应用于字符串类型。

3)对数据库进行操作增删改查之前要先打开数据库,操作完毕要关闭数据库。这只是一种严谨的写法,最好这样,否则可能会操作失败。

2)DELETE

DELETE 语句用于删除表中的行。

语法:DELETE FROM 表名称 WHERE 列名称 = 值,删除所有行:DELETE FROM 表名 或者DELETE * FROM 表名。

现在我们删除itemid为Shoe0101、Shoe0102这两行~  如图5

图5

3)UPDATE

Update 语句用于修改表中的数据。

语法:更新某行的一列:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值。更新某行的若干列:UPDATE 表名称 SET 列名称1 = 新值1 ,列名称2 = 新值2 WHERE 列名称 = 某值。

将idNew为10000103的那一行 name改为静林是真的瓜子,status改为U,看代码:如图 6。

图6

4)SELECT

SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。

语法:SELECT 列名称 FROM 表名称 或者 SELECT * FROM 表名称。

再次提示:星号(*)是选取所有列的快捷方式。SQL 语句对大小写不敏感。SELECT 等效于 select。

在讲update的时候已经写了一些select的语句了。通过条件查询 如图7

图7

注意:获取结果集列顺序的时候,一定要取对类型,比如banner类型是字符串就要用stringForColumnIndex,整形就要使用intForColumnIndex,长整型就要使用longForColumnIndex,类型取不对,会导致返回的结果不对,切记!

通过关键字查询结果,如图8:

图8

大坑注意:

1)模糊查询时,需要自己拼接查询语句,不要使用框架提供的

2)'%' 是特殊字符,此时需要使用%转义.即 '%%'

3)自己拼接查询语句时,就需要自己添加单引号把字符串引起来

错误的拼接和执行模糊查询的方式:FMResultSet *resultSet = [_db executeQueryWithFormat:@"select * from t_heros where name like '%%%@%%'",keyWord];

正确的拼接和执行模糊查询的方式:NSString *selectSQL = [NSString stringWithFormat:@"select * from t_heros where name like '%%%@%%'",keyWord];

FMResultSet *resultSet = [_db executeQuery:selectSQL];

到这里就写完啦~希望对你有所帮助!不足之处敬请谅解并希望加以指正!

ios mysql 修改数据,iOS数据库FMDB--增删改查(模糊查询)实写记录相关推荐

  1. MySql数据库的增删改查模糊查询

    MySql去笛卡尔积查询:select * from dept d,emp e where d.did=e.id 模糊查询的话查询全部数据如下 like 是模糊查询的意思  %是像的意思 比如 李% ...

  2. 【MySQL 第三天数据库表 增删改查】

    [MySQL 第三天数据库表 增删改查]] [1]mysql数据库表创建命令 [2]mysql查看数据库下的表命令 [3]mysql查看表内容命令 [4]mysql修改数据库表 [4.1]mysql添 ...

  3. mysql修改字段默认值_MySQL增删改查操作

    增删改查操作 查询表中的所有的记录:select from 表名(xs) 创建数据库:create database if not exists xsgl; 8.2创建表:cerate table i ...

  4. mongodb修改数据语句_MongoDB常用增删改查语句

    数据库database 创建及查看库 1.有则使用这个数据库,没有就创建 use DATABASE_NAME 2. 查看当前选择的数据库,默认是test db 3.查看数据库,默认有admin.loc ...

  5. 【狂神MyBatis笔记】map作为参数传递类型进行增删改查模糊查询

    接口中的参数传入map: 实现类的传入参数为map的键的名称,这个键可以自定义名称: 例:根据ID获取用户 接口: //根据ID获取用户User getUserById2(Map<String, ...

  6. ios 查询mysql数据库操作系统_iOS数据库FMDB--增删改查(模糊查询)详细介绍

    简介: 很早就想整理一下数据库的使用了,刚好最近接触较多,加之可以安排出空余的时间,所以瓜子我贡献出自己喝咖啡的时间整理一下FMDB的使用,以下是对FMDB的介绍以及基本使用 --- insert.d ...

  7. 华山论剑之iOS中(数组,字典,SQLite,CoreData)的“增删改查“

    我们的生活态度就应该是 "不抱怨" ! 其实我想写这篇文章很久了,因为自己做的iOS开发 ,对数据这一块有这极高的要求.所以一些必须的存储数据的使用,我们都有必要熟悉用法.在以前我 ...

  8. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

最新文章

  1. Java注解Annotation详解
  2. 母婴品牌与AI的碰撞:第四范式为美素佳儿提供智能推送服务
  3. html中购物车总金怎么算额,计算购物车金额总和( jquery )
  4. windows效率工具,翻译软件QTranslate
  5. java中aotomicInteger_面试官:你说一下对Java中的volatile的理解吧!
  6. STC学习:温度与光照传感器
  7. 常用代码大全(新手入门必备)
  8. 融云 SDK 5.0.0 功能迭代
  9. 宏碁暗影骑士2022 i7-12700h+intel ax1650网卡+ubuntu1804+linux5.19 安装网卡驱动
  10. ansys命令流——网格划分基础操作
  11. 积木导出pdf打不开文件,后台报空指针
  12. 电工电子技术知识点总结(基本放大电路)
  13. 【科创人独家】华旦天使张洁:风口是创业者的造物,投资本质是件农活
  14. excel-中心趋势-基本函数-离散程度-四分位数QUARTILE.EXC-画箱线图-标准差
  15. 【办公软件有哪几种】万彩办公大师教程丨Office转图片工具
  16. 解决win10只有IE可以上网,其他浏览器都无法连接网络
  17. 趋势顶底指标公式 通达信趋势顶底主图选股指标 清晰的趋势顶底详解
  18. linux 入门命令,新手入门Linux命令集锦
  19. 【AD20学习笔记】PCB设计规则设置及手工布线
  20. 孕妇计算机老师待机房可以吗,微机房辐射对胎儿的影响

热门文章

  1. 集团信息化管控型模式
  2. 路由协议重分发之RIP协议和EIGEP协议
  3. 电力巡检智能管控主站平台性能优化(一):数据采集及用户行为分析
  4. int(1) 和 int(10) 有什么区别?资深开发竟然都理解错了!
  5. 最近和Nginx杠上了!
  6. 系统架构设计:平滑发布和ABTesting
  7. 官司一打 20 年,Linux 抄袭 Unix 终有定论,原告被 “ 熬死 ” 、IBM赔了上亿
  8. 关于ArrayList的几大问题,看完还不懂来打我!
  9. MySQL 5.6.35 索引优化导致的死锁案例解析
  10. 9月8日凌晨,字节跳动全员收到邮件!因为这件事,所有人多发半个月工资!字节沸腾!网友酸了!...