iOS-FMDB-数据库使用-(executeUpdate: withArgumentsInArray:,executeUpdate:)

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容