OC-FMDB二次封裝(面向模型開(kāi)發(fā))

  • 主要實(shí)現(xiàn)邏輯

通過(guò)繼承HWFMDBModel,在操作數(shù)據(jù)庫(kù)時(shí),內(nèi)部通過(guò)runtime獲取模型的屬性列表,通過(guò)手動(dòng)拼接SQL語(yǔ)句來(lái)實(shí)現(xiàn)數(shù)據(jù)的增刪改查,廢話不多說(shuō)了直接代碼

未命名.gif
  • HWFMDBModel介紹
/** 注意:添加必須大寫(xiě) 用于記錄添加數(shù)據(jù)id */
@property (nonatomic, assign) NSInteger ID;

/** 創(chuàng)建表 */
+ (BOOL)hw_createTableWithName:(NSString *)tableName db:(FMDatabase *)db;
/** 插入數(shù)據(jù) */
- (BOOL)hw_insertTableWithName:(NSString *)tableName db:(FMDatabase *)db;
/** 刪除數(shù)據(jù) */
- (BOOL)hw_deleteTableWithName:(NSString *)tableName db:(FMDatabase *)db;
/** 更新數(shù)據(jù) */
- (BOOL)hw_updateTableWithName:(NSString *)tableName db:(FMDatabase *)db;
/** 查詢數(shù)據(jù) */
+ (NSArray *)hw_queryTableWithName:(NSString *)tableName db:(FMDatabase *)db;
簡(jiǎn)單使用
  • 首先定義模型繼承HWFMDBModel
#import <Foundation/Foundation.h>
#import "HWFMDBModel.h"

NS_ASSUME_NONNULL_BEGIN

@interface FMDBItem : HWFMDBModel
/** <#注釋#> */
@property(nonatomic, strong) NSString *name;
/** <#注釋#> */
@property(nonatomic, assign) NSInteger age;

@end

NS_ASSUME_NONNULL_END
  • 在控制器中創(chuàng)建DB(這里用的懶加載)
@property(nonatomic, strong) FMDatabase *db;

- (FMDatabase *)db {
    if (!_db) {
        NSString *docuPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
        NSString *dbPath = [docuPath stringByAppendingPathComponent:@"text.db"];
        NSLog(@"數(shù)據(jù)庫(kù)路徑:%@",dbPath);
        _db = [FMDatabase databaseWithPath:dbPath];
    }
    return _db;
}
         // 直接通過(guò)模型類方法創(chuàng)建模型
        BOOL tag = [FMDBItem hw_createTableWithName:tableName db:self.db];
        if (tag) {
            NSLog(@"創(chuàng)建成功");
        } else {
            NSLog(@"創(chuàng)建失敗");
        }
  • 插入數(shù)據(jù)
        FMDBItem *item = [FMDBItem new];
        NSInteger num = arc4random() % 1000;
        item.name = [NSString stringWithFormat:@"李含文%ld",num];
        item.age = num;
        BOOL tag = [item hw_insertTableWithName:tableName db:self.db];
        if (tag) {
            NSLog(@"插入成功");
            [weakSelf loadData];
        } else {
            NSLog(@"插入失敗");
        }
  • 查詢數(shù)據(jù)
   NSArray *itemArray = [FMDBItem hw_queryTableWithName:tableName db:self.db];
  • 更新數(shù)據(jù)
    FMDBItem *item = self.itemArray[indexPath.row];
    item.name = @"李含文";
    item.age = 18;
    BOOL tag = [item hw_updateTableWithName:tableName db:self.db];
    if (tag) {
        NSLog(@"操作成功");
        [self.tableView reloadData];
    } else {
        NSLog(@"操作失敗");
    }
  • 刪除數(shù)據(jù)(直接用模型刪除)
    FMDBItem *item = self.itemArray[indexPath.row];
    BOOL tag = [item hw_deleteTableWithName:@"text" db:self.db]; // 刪除操作
    if (tag) {
        NSLog(@"刪除成功");
    } else {
        NSLog(@"刪除失敗");
    }
  • 刪除表
       NSString *sql = [NSString stringWithFormat:@"DROP TABLE IF EXISTS %@", tableName];
        BOOL tag = [self.db executeUpdate:sql];
        if (tag) {
            NSLog(@"刪除成功");
        } else {
            NSLog(@"刪除失敗");
        }

Dome
注意:本文沒(méi)有對(duì)DB的開(kāi)啟關(guān)閉做任何操作,開(kāi)啟關(guān)閉須自行管理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市延塑,隨后出現(xiàn)的幾起案子答渔,更是在濱河造成了極大的恐慌,老刑警劉巖研儒,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件端朵,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡冲呢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門邻薯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)乘凸,“玉大人,你說(shuō)我怎么就攤上這事灵嫌「鹱鳎” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵绪穆,是天一觀的道長(zhǎng)虱岂。 經(jīng)常有香客問(wèn)我邻寿,道長(zhǎng)怯晕,這世上最難降的妖魔是什么拜姿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任询兴,我火速辦了婚禮,結(jié)果婚禮上试读,老公的妹妹穿的比我還像新娘荠耽。我一直安慰自己,他們只是感情好铝量,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布慢叨。 她就那樣靜靜地躺著,像睡著了一般拍谐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上践瓷,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天亡蓉,我揣著相機(jī)與錄音,去河邊找鬼淋肾。 笑死梯影,一個(gè)胖子當(dāng)著我的面吹牛庶香,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赶掖,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼奢赂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了膳灶?” 一聲冷哼從身側(cè)響起立由,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤锐膜,失蹤者是張志新(化名)和其女友劉穎弛房,沒(méi)想到半個(gè)月后道盏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荷逞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年种远,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恨搓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡常拓,死狀恐怖辉浦,靈堂內(nèi)的尸體忽然破棺而出弄抬,到底是詐尸還是另有隱情宪郊,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布懊亡,位于F島的核電站乎串,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鸯两。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一钧唐、第九天 我趴在偏房一處隱蔽的房頂上張望匠襟。 院中可真熱鬧该园,春花似錦帅韧、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至帘饶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間镀裤,已是汗流浹背缴饭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留担猛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓傅联,卻偏偏與公主長(zhǎng)得像疚察,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子比驻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容