基于FMDB的数据库封装使用

对于iOS开发者,尤其是初级开发者来说,SQL的使用无疑是个头疼的问题,并不是有多难,而是一坨一坨的语句就让人头皮发麻,作者在开发过程中由于要向数据库中存入很多的数据,虽然已经用了FMDB神器,看着一堆SQL语句依然头疼,于是一咬牙一跺脚,把FMDB再封装一层,实现API调用

既然基于FMDB,那就必须导入这个神器,作者是使用的cocoapods导入的FMDB三方库,至于怎么安装并使用cocoapods,这里不再讲解,请自行查阅资料

pod 'FMDB', '~> 2.7.2'   导入FMDB

先从创建表格说起,由于创建每个表格需要的参数名称、数量都有差别,毫无疑问要想统一方法,则需要传递不定长的参数,灵感来源于UIAlertView传递参数的方法,于是创建表格的方法就写成了这个样子

- (void)createRSSTable:(NSString*)tableName objs:(NSString*)firstObj, ...NS_REQUIRES_NIL_TERMINATION;

but  参数是传进来了,怎么来拿到这些参数从而写出SQL语句呢?接着往下看,实际上这些参数都被存入的一个链表之中,而不是数组,iOS提供了方法供我们来遍历这些参数,于是我们就可以把这些参数放到我们熟悉的数组中NSMutableArray *objs = [[NSMutableArray alloc] init];

    //参数链表指针

    va_listlist;

    //遍历开始

    va_start(list, firstObj);

    //知道读取到下一个时nil时结束递增

    for(NSString*str = firstObj; str !=nil; str =va_arg(list,NSString*)) {

        NSLog(@"%@",str);

        [objsaddObject:str];

    }

    //结束遍历

    va_end(list);

拿到参数数组就可以来拼接SQL语句了,首先来拼接参数语句

NSMutableString *sql = [[NSMutableString alloc] init];

    for(NSIntegeri =0;i < objs.count; i++)

    {

        if(i < objs.count-1)

        {

            [sqlappendFormat:@"%@", [NSString stringWithFormat:@"%@ varchar(256),",objs[i]]];

        }

        else

        {

            [sqlappendFormat:@"%@", [NSString stringWithFormat:@"%@ varchar(256)",objs[i]]];

        }

    }

最后拼接完成的SQL语句就成了这个样子

NSString* priceAlertSql = [NSStringstringWithFormat:@"create table if not exists %@(%@)",tableName,sql];

好了,完整的语句有了,我们就可以来创建表格,老规矩,调用FMDB里的方法

BOOLisTableSuccess = [_fmdbexecuteUpdate:priceAlertSql];

最后记得关闭数据库

[_fmdb close];

接下来问题来了,表格是创建成功了,我们怎么去像特定的表格中进行插入删除等操作,如果把字段和值都传进去岂不是很啰嗦?作者是这么干的,创建一个全局字典,把表名和字段存进一个字典不就搞定了吗?这样只需要根据表格名字来拿到这些字段不就可以进行下一步的操作了,代码如下

[_tableObjDicsetObject:objsforKey:tableName];

这里只写了创建表格的封装,在demo里面封装了插入数据,删除数据,更改表格中的数据方法,剩下的查找方法还没来得及去写,思路基本都是这个思路,请猴子们自行脑补,最后也会附上demo地址

因为本人也是iOS菜鸟一枚,文章和代码依然有很多不足,甚至漏洞,还请大家海涵,有好的思路也可留言,一起探讨,共同进步,大神请绕道,当然如果大神能留下自己的建议或者批评,本人将不胜感激!

demo地址:https://github.com/Yunyan520/FMDBSQL.git

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

推荐阅读更多精彩内容