美文网首页iOS程序员iOS开发
iOS之手把手教你学会使用sqlite,并应用于实际开发

iOS之手把手教你学会使用sqlite,并应用于实际开发

作者: 小蠢驴打代码 | 来源:发表于2017-02-24 17:15 被阅读924次

相信大部分的开发者在实际开发中,可能项目都会有要求实现部分的数据的持久化保存,而在移动开发中,基本推荐使用轻量级的关系数据库--sqlite,而FMDB就是基于sqlite封装的第三方开源库, 这里就详细的讲一下iOS中,如何方便的使用FMBD进行项目开发。


数据库的使用步骤一般如下:

1.创建数据库;

2.创建表(如果表不存在);

3.对表进行操作(增、删、改、查);

4.一般有第四步:在3操作完,查询一下结果,看看数据库操作语句写的是否正确;

5.关闭数据库;


下面以实际代码展示如何进行删除操作:

数据库删除语句

如图,可以删除 表:affirRemind 中 type = 7 的所有数据;

-->这里说一下,FMDB中,删除(delete)、插入(insert)、更新(update)和正常的数据库都一样,一条String类型的语句,执行一下就可以;

但是!!坑就坑在 select 语句上!

单纯使用select 语句

如上图所示,如果这是这样写,要获取 recently 表中的数据,会发现 sql语句有执行,但是-->并没有返回值!所以这样的写法,我们并不能获得 select 语句的执行效果,自然不知道 之前如果做的数据库操作语句(增、删、改)是否真正成功!


-->小tips:FMDB中,如何正确使用select语句,并返回我们想要的结果!

select语句查询

tips:1.因为我们要获取select的值,所有需要有返回值-->FMResultSet接收

        2.执行方法:不是直接执行更新语句:executeUpdate

      3.通常查询的结果,是多条数据,通过[result next]方法,可以实现-->一旦还有数据,就会进入循环

      4.查询到的结果,并不能直接显示-->要通过:stringForColumn 转成String类型显示。


贴一下正常的使用方法:因为我们一般在iOS中,使用select语句,不仅仅是检验操作语句,而是要展示数据-->一般是多条数据,所有可以我通常是返回一个数组展示查询结果!

select语句-实际开发中常用方法

接下去就是正确使用FMDB的正确+方便+效率的使用方式了-->sqlite Manager!

大tips!-->这里一定要注意搜索引擎! 用google搜索,用百度的话,相信你会明白为什么现在做开发的都是推荐用google的了!!(不黑百度,请勿喷)

sqlite Manager 安装

这里说一下,sqlite Manager是火狐浏览器的插件,所以先下个火狐,直接用google(不知道如何翻墙的回头我可以推荐软件)搜索,安装插件,发现-->“工具”中多了一个sqlite Manager选项,点击他.


打开sqlite

这里,这要我们找到我们当前项目的数据库路径,就能通过sqliteManager打开它-->如何找到sqlite在本地的保存路径?

步骤如下:

1.通过全局查找-->.sqlite

1.在创建数据库的时候,需要沙盒路径,一般通过搜索“.sqlite”,是可以找到当时创建时sqlite的全路径的

2.打印该.sqlFilePath --> 获取全路径-->copy

3.通过“前往文件夹”-->进入第二步保存的路径

前往文件夹

4.拿到sqlite文件.

--------------华丽分割线-----------------------------------------------------
5.copy 该sqlite文件,放到桌面,用sqliteManager打开;

6.指出第5步的错!-->不能copy出来,因为这样就和项目没有关联,当我们在项目中操作的时候,copy出来的项目并没有和程序关联,所有不能更新!

7.通过手动:查找sqlite文件位置-->对照沙盒的数据库路径!

8.选择正确的根目录!

例如:我的sqlite路径

-->这里一定要注意:不能copy,得自己通过项目的沙盒拿到,因为每个人每个项目保存的路径都是不一样的!!不能copy别人的!切记!

9.对照路径一步一步查找

找不到Libaray!

特别注意:资源库是默认隐藏的!需要通过终端打开,不然无法找到沙盒的路径!

10.通过终端打开资源库的隐藏

通过终端-->打开Library

11.看到资源库之后,其他跟随路径一步一步查找就可以了

12.开始操作!


使用sqliteManager进行操作

通过sqliteManager-实现对项目的select查询

这样,我们在项目中,比如执行了删除操作时,在FMDB中,我们可能需要用到FMResultSet,然后还要接收回传的数据,再转换,再打印,最后输出。

但是,此时我们只需要简单的一句Select * from XXX表,就能看的XXX表的数据变化!

以后开发中:1.在项目中写更新(插入、删除、更新)语句;

                     2.先使用sqliteManger查看 操作后的结果-->如果不对,改第一步中的操作语句;

                     3.如果查询正确,在项目中--需要用到select 的地方,再使用FMResultSet;

                     4.对于SQL语句不熟悉的,可以起到检验SQL语句是否正确的效果。因为FMDB中的都是使用@“”,并不会存在编译报错的问题,所有不好检验。


但是,SqliteManger只能查询,不能进行更新!以删除为例

不能通过外部的sqliteManager影响程序内部的数据库

大致意思是:sqliteManager是外部的软件,不能通过外部操作,影响内部(程序)的数据库信息-->没有写的权限,只有读的权限;

但是-->我们需要用到SqliteManager,只要我们再项目中,进行更新操作之后,能直接使用select检查操作完的结果就行了!特别是对于我们现在的项目--即时通讯,需要做到数据的持久性保存,经常需要操作数据库,而找了好久都没发现有对SqliteManager有详细解释或者用法说明的,所有做了一些补充,希望能帮助真正有需要的人~



相关文章

网友评论

  • 十一岁的加重:sql移动 端写来写去就那几句
    小蠢驴打代码:@十一岁的加重 以iOS而言,数据持久化存储一般是用Core Data 或者 SQLite,Core Date 就是你说说的对象化存储,我目前是使用SQLite,因为SQLite对内存和磁盘空间的使用都相对较少,而且可以跨平台,在Android系统也可以使用,但是缺点是在代码实现麻烦而且易出错(因为都是用语句都是字符串),Core Date相对来说,因为是对象我们更好操作,但是学习周期比较长,要学好要花不少时间~
    十一岁的加重:@小蠢驴打代码 最近都有很多对象化存储的框架了,用这些框架,和自己写这些语句,哪个好一些啊
    小蠢驴打代码:讲道理确实是这样,但是有时候where(XXX) 中写的条件,比如a = [0,3]是一个区间,或者某个值是(null),要看写成 a is not null ,或者 a != xxx,或者a<> xxx 等语句,由于移动端都是用轻量级的数据库,所以排查的时候,如果在项目中,直接使用select语句并不方便,无法直观的直接得到操纵语句执行完的结果。
  • c3f6cf64745f:写得不错~

本文标题:iOS之手把手教你学会使用sqlite,并应用于实际开发

本文链接:https://www.haomeiwen.com/subject/zlswwttx.html