iOS之手把手教你学会使用sqlite,并应用于实际开发
相信大部分的开发者在实际开发中,可能项目都会有要求实现部分的数据的持久化保存,而在移动开发中,基本推荐使用轻量级的关系数据库--sqlite,而FMDB就是基于sqlite封装的第三方开源库, 这里就详细的讲一下iOS中,如何方便的使用FMBD进行项目开发。
数据库的使用步骤一般如下:
1.创建数据库;
2.创建表(如果表不存在);
3.对表进行操作(增、删、改、查);
4.一般有第四步:在3操作完,查询一下结果,看看数据库操作语句写的是否正确;
5.关闭数据库;
下面以实际代码展示如何进行删除操作:
![](https://img.haomeiwen.com/i4563271/a5eef82e91df12e8.png)
如图,可以删除 表:affirRemind 中 type = 7 的所有数据;
-->这里说一下,FMDB中,删除(delete)、插入(insert)、更新(update)和正常的数据库都一样,一条String类型的语句,执行一下就可以;
但是!!坑就坑在 select 语句上!
![](https://img.haomeiwen.com/i4563271/edb7f3a6a06a6e3c.png)
如上图所示,如果这是这样写,要获取 recently 表中的数据,会发现 sql语句有执行,但是-->并没有返回值!所以这样的写法,我们并不能获得 select 语句的执行效果,自然不知道 之前如果做的数据库操作语句(增、删、改)是否真正成功!
-->小tips:FMDB中,如何正确使用select语句,并返回我们想要的结果!
![](https://img.haomeiwen.com/i4563271/dd3fb349b2b8bccf.png)
tips:1.因为我们要获取select的值,所有需要有返回值-->FMResultSet接收
2.执行方法:不是直接执行更新语句:executeUpdate
![](https://img.haomeiwen.com/i4563271/8c6bc2a87a0e7c07.png)
3.通常查询的结果,是多条数据,通过[result next]方法,可以实现-->一旦还有数据,就会进入循环
4.查询到的结果,并不能直接显示-->要通过:stringForColumn 转成String类型显示。
贴一下正常的使用方法:因为我们一般在iOS中,使用select语句,不仅仅是检验操作语句,而是要展示数据-->一般是多条数据,所有可以我通常是返回一个数组展示查询结果!
![](https://img.haomeiwen.com/i4563271/dfa5891e36517e44.png)
接下去就是正确使用FMDB的正确+方便+效率的使用方式了-->sqlite Manager!
![](https://img.haomeiwen.com/i4563271/3a742f81ef892e28.png)
大tips!-->这里一定要注意搜索引擎! 用google搜索,用百度的话,相信你会明白为什么现在做开发的都是推荐用google的了!!(不黑百度,请勿喷)
![](https://img.haomeiwen.com/i4563271/71d61ea46e3e8a92.png)
这里说一下,sqlite Manager是火狐浏览器的插件,所以先下个火狐,直接用google(不知道如何翻墙的回头我可以推荐软件)搜索,安装插件,发现-->“工具”中多了一个sqlite Manager选项,点击他.
![](https://img.haomeiwen.com/i4563271/734e5f40160ab06b.png)
这里,这要我们找到我们当前项目的数据库路径,就能通过sqliteManager打开它-->如何找到sqlite在本地的保存路径?
步骤如下:
![](https://img.haomeiwen.com/i4563271/d3044a6482342374.png)
1.在创建数据库的时候,需要沙盒路径,一般通过搜索“.sqlite”,是可以找到当时创建时sqlite的全路径的
2.打印该.sqlFilePath --> 获取全路径-->copy
3.通过“前往文件夹”-->进入第二步保存的路径
![](https://img.haomeiwen.com/i4563271/fc0955d4b9902ff2.png)
4.拿到sqlite文件.
![](https://img.haomeiwen.com/i4563271/f1fb2a22f217d7c3.png)
--------------华丽分割线-----------------------------------------------------
5.copy 该sqlite文件,放到桌面,用sqliteManager打开;
6.指出第5步的错!-->不能copy出来,因为这样就和项目没有关联,当我们在项目中操作的时候,copy出来的项目并没有和程序关联,所有不能更新!
7.通过手动:查找sqlite文件位置-->对照沙盒的数据库路径!
8.选择正确的根目录!
![](https://img.haomeiwen.com/i4563271/9e9ecd8fd0dfe76a.png)
-->这里一定要注意:不能copy,得自己通过项目的沙盒拿到,因为每个人每个项目保存的路径都是不一样的!!不能copy别人的!切记!
9.对照路径一步一步查找
![](https://img.haomeiwen.com/i4563271/779518772c83ff1d.png)
特别注意:资源库是默认隐藏的!需要通过终端打开,不然无法找到沙盒的路径!
10.通过终端打开资源库的隐藏
![](https://img.haomeiwen.com/i4563271/c170d4743c60bd31.png)
11.看到资源库之后,其他跟随路径一步一步查找就可以了
![](https://img.haomeiwen.com/i4563271/9948e41db603ce9a.png)
12.开始操作!
使用sqliteManager进行操作
![](https://img.haomeiwen.com/i4563271/b3c99989adf22601.png)
这样,我们在项目中,比如执行了删除操作时,在FMDB中,我们可能需要用到FMResultSet,然后还要接收回传的数据,再转换,再打印,最后输出。
但是,此时我们只需要简单的一句Select * from XXX表,就能看的XXX表的数据变化!
以后开发中:1.在项目中写更新(插入、删除、更新)语句;
2.先使用sqliteManger查看 操作后的结果-->如果不对,改第一步中的操作语句;
3.如果查询正确,在项目中--需要用到select 的地方,再使用FMResultSet;
4.对于SQL语句不熟悉的,可以起到检验SQL语句是否正确的效果。因为FMDB中的都是使用@“”,并不会存在编译报错的问题,所有不好检验。
但是,SqliteManger只能查询,不能进行更新!以删除为例
![](https://img.haomeiwen.com/i4563271/982a7023b431271a.png)
大致意思是:sqliteManager是外部的软件,不能通过外部操作,影响内部(程序)的数据库信息-->没有写的权限,只有读的权限;
但是-->我们需要用到SqliteManager,只要我们再项目中,进行更新操作之后,能直接使用select检查操作完的结果就行了!特别是对于我们现在的项目--即时通讯,需要做到数据的持久性保存,经常需要操作数据库,而找了好久都没发现有对SqliteManager有详细解释或者用法说明的,所有做了一些补充,希望能帮助真正有需要的人~