ios 查询mysql数据库操作系统_iOS数据库FMDB--增删改查(模糊查询)详细介绍
简介:
很早就想整理一下数据库的使用了,刚好最近接触较多,加之可以安排出空余的时间,所以瓜子我贡献出自己喝咖啡的时间整理一下FMDB的使用,以下是对FMDB的介绍以及基本使用 --- insert、delete、update、select。其中select讲了两种比较重要的方式---ID查询、模糊查询。
在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类型。
我们看到,在沙盒中已经建好了表名为:JLcharacterModel 的数据库。如图3
图 3
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,....)
将数据写入表格,如图4(以下数据来源于卓浦士科技所属的app ---足球技能分析大师TropsX的云端数据,因为安全问题,将部分信息遮挡,敬请谅解)
图 4
注意!请注意:
1)列名称和值名称的顺序要一一对应!例如:列名banner要对应自己的类型text。
2)如果列名类型是NSString,则需要加单引号 ‘’ 括住,例如:'%@',只应用于字符串类型。
3)对数据库进行操作增删改查之前要先打开数据库,操作完毕要关闭数据库。这只是一种严谨的写法,最好这样,否则可能会操作失败。
打开app本地数据库查看我们创建好的表格,如图 5
图 5
这时候你会发现,表格是空的!!!!!what ?
仔细一看,原来是创建表格的表名称写错了!!把 CharaterModel 改为 JLCharaterModel ,so,数据库路径的表名称跟插入数据写的表名称一定要相同!运行程序。铛铛铛~
图 6
注释:图 6 信息显示不全。
2)DELETE
DELETE 语句用于删除表中的行。
语法:DELETE FROM 表名称 WHERE 列名称 = 值,删除所有行:DELETE FROM 表名 或者DELETE * FROM 表名。
现在我们删除itemid为Shoe0101、Shoe0102这两行~ 代码如图 7。
图 7
来看看数据库是否已经删除成功,如图8:铛铛铛~
图 8
已经删除成功~
3)UPDATE
Update 语句用于修改表中的数据。
语法:更新某行的一列:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值。更新某行的若干列:UPDATE 表名称 SET 列名称1 = 新值1 ,列名称2 = 新值2 WHERE 列名称 = 某值。
将idNew为10000103的那一行 name改为静林是真的瓜子,status改为U,看代码:如图 9。
图 9
图10 看看更新成功了没有?
图 10
到这里就非常完美了~~
4)SELECT
SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。
语法:SELECT 列名称 FROM 表名称 或者 SELECT * FROM 表名称。
再次提示:星号(*)是选取所有列的快捷方式。SQL 语句对大小写不敏感。SELECT 等效于 select。
在讲update的时候已经写了一些select的语句了。通过条件查询,图 11看代码~
图 11
注意:获取结果集列顺序的时候,一定要取对类型,比如banner类型是字符串就要用stringForColumnIndex,整形就要使用intForColumnIndex,长整型就要使用longForColumnIndex,类型取不对,会导致返回的结果不对,切记!
查询itemid为Shoe0103的结果,通过断点,我们可以知道返回了一个带有属性的model,如图12:
图 12
通过关键字查询结果,如图13:
图 13
我们查询列名name有“瓜子”、expiredays == 90的结果,如图14:
图 14
可以看到得出一个结果~~
大坑注意:
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];
到这里就写完啦~希望对你有所帮助!不足之处敬请谅解并希望加以指正!QQ:1002282311 谢谢~~
ios 查询mysql数据库操作系统_iOS数据库FMDB--增删改查(模糊查询)详细介绍相关推荐
- MySql数据库的增删改查模糊查询
MySql去笛卡尔积查询:select * from dept d,emp e where d.did=e.id 模糊查询的话查询全部数据如下 like 是模糊查询的意思 %是像的意思 比如 李% ...
- sql 基础语法 创建数据库和数据表 数据增删改查 分组查询 子查询回顾
参考链接: SQL教程 MySQL教程 一.创建数据库语法 --用master数据库 use master --判断数据库是否存在,若存在则删除 if exists (select * from sy ...
- 详解数据库引擎与SQL语句增删改查(非常详细,带例)
数据库系统(DBMS): 专门负责数据管理的工具.增加数据.创建索引.建立索引之间的关联关系.更新索引...... 连接器:PHP要访问MySQL,可以通过API访问,也可以通过PHP的驱动,而那个驱 ...
- 【狂神MyBatis笔记】map作为参数传递类型进行增删改查模糊查询
接口中的参数传入map: 实现类的传入参数为map的键的名称,这个键可以自定义名称: 例:根据ID获取用户 接口: //根据ID获取用户User getUserById2(Map<String, ...
- MySQL数据库安装以及SQL基本增删改查
目录 1.介绍下数据库 1.1.DB概念和特点 1.2.常见DB软件 1.3.数据库结构 2.MySQL安装与使用 2.1.安装 2.2.卸载 2.3.MySQL服务启动与关闭 2.4.MySQL登录 ...
- MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物
MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...
- Unity 2021连接外网数据库,建表,增删改查遇到的问题记录
目录 一.连接外网数据库遇到的问题 二.解决问题的方案 动态链接库下载地址: 效果图 一.连接外网数据库遇到的问题 先抛出问题,就是连接内网数据库不会报错,连接外网时和查询时就报这个错: The gi ...
- Android中数据库的一些操作(增删改查)
提起Android的开发,就不得不提数据库,几乎每个App中都会用到Sqlit数据库存储一些数据,小编闲暇时期,写了一个小demo关于数据库的增删改查,之前也介绍过数据库的一个开源框架ORMLite, ...
- SQLite 数据库安装、创建、增删改查(一)
目录 一.学习资料 二.下载软件 1.SQLite 2.SQLiteStudio 3.Navicat 15 for SQLite 4.System.Data.SQLite.dll 三.创建数据库 1. ...
- Mysql学习笔记(六)增删改查
原文:Mysql学习笔记(六)增删改查 PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into tab ...
最新文章
- 市面上有没有靠谱的PM2.5检测仪?如何自己动手制作PM2.5检测仪
- 连鸽14年的哈勃望远镜“继任者”终于发射了!耗资600亿,能给136亿年前星系拍照...
- ios app提交之前需要哪几个证书
- 2021年高考成绩查询湖北状元,2021年湖北高考状元多少分,今年湖北高考状元资料名单...
- 你是一个有价值的产品经理吗?
- 2018蓝桥杯省赛---java---B---6(递增三元组)
- 北方网-ios预科班
- CentOS下设置vim的tab键为4格
- A.CIMS 计算机集成管理系统,cims系统(smis系统是什么)
- pythonjava app切出后无网络连接_写了一个java的Server 用python的client访问却访问不通问题。...
- .net framework 4.0 0xc8000247错误解决
- 个人博客,个人博客模版,用HTML+CSS做一个漂亮简单的个人网页,个人博客网站html源码
- 2020危险化学品经营单位安全管理人员作业考试题库及危险化学品经营单位安全管理人员理论考试
- 苹果的文件传输服务器叫我们名字,苹果:即使是我们也无法对设备传输数据解密...
- vue 动态生成拓扑图
- 图像处理_ISP_坏点矫正
- mysql密码错误解决方法--windows和ubuntu18.04
- oracle trace进程,ORACLE SQL_TRACE的使用
- AndroidiOS崩溃情况总结
- Python之路【第十六篇】:Django【基础篇】
热门文章
- c语言 交互式电子白板案例,交互式电子白板教学案例
- 【自适应盲均衡3】多模算法(MMA)——复数改进常模算法(MCMA)的理论推导与MATLAB仿真
- (1.3)HarmonyOS鸿蒙启动程序运行流程
- angular字符串转成html,详解angular如何调用HTML字符串的方法
- 计算机c盘哪些东西可以清理,细说电脑c盘哪些文件可以删除
- 地面指示标志_详解消防应急照明和疏散指示系统的施工及安装方法消防施工
- kubernetes-dashboard(1.8.3)部署与踩坑
- CentOS7桌面版系统使用的一些小技巧
- 第三章 使用单元测试测试简单的首页
- JavaWeb(十七)——JSP中的九个内置对象