美文网首页常用的第三方复制粘贴ios
iOS-FMDB-数据库使用-(executeUpdate: w

iOS-FMDB-数据库使用-(executeUpdate: w

作者: 东方诗空 | 来源:发表于2016-11-02 23:52 被阅读3278次

    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一下。

    本文原创,版权所有,转载请说明出处。

    相关文章

      网友评论

      • LD_左岸:我现在写到返回了所有聊天记录的数组了 但是我想一进入页面时把聊天记录的最后3条展示到tableView上 然后用户往下拖动tableView时 再加载倒数第三条到倒数第六条 以此类推 请楼主点拨
        东方诗空:可以把 每一查询的个数 limit 修改成你想要的3
      • August24:大牛
      • 爃少:self = [super init] ?
        东方诗空:@爃少 重写init方法,需要调用 [super init]

      本文标题:iOS-FMDB-数据库使用-(executeUpdate: w

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