相信大部分的开发者在实际开发中,可能项目都会有要求实现部分的数据的持久化保存,而在移动开发中,基本推荐使用轻量级的关系数据库--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.通过全局查找-->.sqlite1.在创建数据库的时候,需要沙盒路径,一般通过搜索“.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.通过终端打开资源库的隐藏
通过终端-->打开Library11.看到资源库之后,其他跟随路径一步一步查找就可以了
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有详细解释或者用法说明的,所有做了一些补充,希望能帮助真正有需要的人~
网友评论