FMDB-数据库初步使用
前言
最近公司不是很忙,抽时间把在l聊天模块关于数据库的存储总结一下,分享给大家。
起初选择coreData来存储,后期发现,coreData的使用有点不顺手,包括后面动态添加字段修改数据库结构,需要适配线上和线下不同数据结构的问题,当时适配花了很大功夫去完成,后来觉得版本迭代和维护不好,最后放弃coreData,选择FMDB。
在本文中,实现从无到有的数据建表,以及工作中用到的bug和需要考虑到的数据安全性。对于FMDB的介绍不在多说,网上一搜一大把。
本人才学疏浅,如有考虑不全面和不足的地方,希望不吝赐教,谢谢!
废话少说,进入主题。
1、pod管理集成FMDB
此项操作不多说,终端执行命令就可以了。
2、封装FMDB工具类,实现创建数据表格,并完成基本的增删该查功能。
JWDFMDBChatMessageData.h
创建实现全局,创建,打开,关闭,数据表是否在链接中,在每一次写入数据时,确保数据库打开,一直链接状态,当程序退出,或不使用数据库时,及时关闭数据库,以确保数据库的安全性。有开有关。
对数据库的操作无外乎,增删改查,其核心是sql语句的实现,如果还需要其他的需求只是sql语句的不同罢了。比如需要查询,聊天时消息读与未读的状态,发送消息成功或失败的状态,获取最后一条记录的消息显示在动态中;修改,一条消息的各种状态等等情况。
所以学会基本的增删改查,其余的也就无师自通了。好了,说了说.h 开始走进.m是具体实现。
JWDFMDBChatMessageData.m
2.1
创建单例在init方法里面判断指定路径是否已经存在表格,来创建和操作表格。
在创建表的过程中,一旦发现创建表失败,立即退出,防止造成不必要的麻烦,提高代码的健壮性。
同时,创建和修改数据表格的版本号,初学者可能没有考虑到这些,只是实现功能就行。其实这是为以后迭代维护打下良好的基础。如果需要修改数据表的结构,那么不同的版本号,就派上用途了,用于区分,也可以很好地维护。下面会说道动态修改数据表结构。
2.2
建表建表,把需要建的表,抽取一起统一建立,便于管理,也便于逻辑的维护,表与表之间的业务逻辑,注意打开数据表和关闭数据表成对出现,做到不用时及时关闭。确保数据安全。
在书写sql语句的时候注意语法的结构,一般操作是被 百分之九十多是sql语句写错导致的。
2.3
添加版本号以时间戳为依据常见版本号,便于后期查询管理。
2.4 动态修改数据表结构
更新数据表版本号 动态修改数据表结构在init方法里面你会看到动态修改数据表结构,如果,后期你需要在表中添加一些字段,那么这里就可以很方便的添加,也不会影响修改前后因数据结构不同而引起的坑,不需要想coreData那样费恨大的功夫去适配。用过coreData的会觉得是不是FMDB太爽了。
3 增删改查
3.1增
插入数据 几种插入数据的方法查询FMDB库,你会发现有几种操作插入数据的方法,大多数情况我们会使用第一种方式去操作,因为这种方法简单,书写简便,但是这种方法在使用的时候会有坑出现,如果你的数据里面有特殊字符,那么数据插入就会失败,比如 因为的单引号 ' ,还有其他的特殊字符,本人在使用时就被坑爹过。所以如果你阅读到了这里,恭喜你,少了一个坑。
解决方案,当然是有的,FMDB库可能早就想到这写问题,所有可以通过第二种(数组) 和第三种(字典键值对)方法可以解决。本人使用的是第二种方法,第三种方法的实现自行学习,下面上代码。
特殊字符处理一看代码结构是不是多了些,因为在使用方法2s时,需要把数据报成对象,才能处理,为什么呢?你懂得,数组里面放什么?
如果对于有多个表,或者多个地方用到这样的书写,重复重复,是不是太累太耨。可以封装一个方法来凭借sql语句。岂不美哉,时间关系,还没有搞出来,稍后修改同步。
3.2删
3.3改
改3.4查
查查,对于聊天数据的存储查询,细心的会发现,有两个id,一个是登陆者的id,一个是聊天对方的id.
加入登录者的id,可以实现多账号登录同一手机里面的同于app数据不会错乱。这个容易忽略。这也是本人在写聊天时起初没有考虑到的。
加入聊天对方的id,为了一个登录id对于多个好友聊天记录的查询,一般都会想到这里。
小结
基本需要注意的已经写完,是不是觉得FMDB简单,本人只能到这里了,如你发现还需要注意什么,请赐教,愿想你学习。
最后附上 demo 地址 FMDB-数据库使用-Demo
如果你觉得对你有帮助,欢迎评论交流,也可以star一下。
本文原创,版权所有,转载请说明出处。
网友评论