FMDB

1.什么是FMDB

FMDB是iOS平臺的SQLite數(shù)據(jù)庫框架

FMDB以O(shè)C的方式封裝了SQLite的C語言API

2.FMDB的優(yōu)點

使用起來更加面向?qū)ο笱滩∪チ撕芏嗦闊┤槿啤⑷哂嗟腃語言代碼

對比蘋果自帶的Core Data框架崖技,更加輕量級和靈活

提供了多線程安全的數(shù)據(jù)庫操作方法仗考,有效地防止數(shù)據(jù)混亂

我們使用FMDB的時候首先將FMDB使用cocopods導(dǎo)入到我們的工程中:pod 'FMDB'
之后在我們的工程中導(dǎo)入需要的頭文件即可:#import "FMDatabase.h"

開發(fā)中我們一般會把數(shù)據(jù)存儲到沙河路徑下

   NSString * docPath=[[NSString alloc]init];
    docPath=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];//獲取沙河地址
    NSLog(@"docPath==%@",docPath);

第一步設(shè)置數(shù)據(jù)庫名稱

NSString * fileName=[docPath stringByAppendingPathComponent:@"student.sqlite"];//設(shè)置數(shù)據(jù)庫名稱
        FMDatabase * fmdb=[FMDatabase databaseWithPath:fileName];//創(chuàng)建并獲取數(shù)據(jù)庫信息
    if ([fmdb open]) {
        NSLog(@"數(shù)據(jù)庫打開成功蛀骇!");
    }else{
        NSLog(@"數(shù)據(jù)庫打開失敹谟浑此!");

    }

第二步創(chuàng)建表

其中:
CREATE TABLE IF NOT EXISTS t_student 按照字面翻譯為如果不存在t_student,則創(chuàng)建表对人;
id integer PRIMARY KEY AUTOINCREMENT 字段id數(shù)據(jù)類型為integer類型,并且為基鍵自增拂共;
name text NOT NULL, age integer NOT NULL, sex text NOT NULL 字段name牺弄、sex的數(shù)據(jù)類型為text 默認為NULL(空),字段age 數(shù)據(jù)類型為integer 默認為NULL

//    PRIMARY KEY AUTOINCREMENT 基鍵 并且自增
    BOOL executeUpdate = [fmdb executeUpdate:@"CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text NOT NULL, age integer NOT NULL, sex text NOT NULL);"];
    if (executeUpdate) {
        NSLog(@"創(chuàng)建表成功");
    } else {
        NSLog(@"創(chuàng)建表失敗");
    }

第三步添加數(shù)據(jù)(插入數(shù)據(jù))

注意:
1.executeUpdate:不確定的參數(shù)用宜狐?來占位(后面參數(shù)必須是oc對象势告,;代表語句結(jié)束)
2.executeUpdateWithForamat:不確定的參數(shù)用%@抚恒,%d等來占位 (參數(shù)為原始數(shù)據(jù)類型咱台,執(zhí)行語句不區(qū)分大小寫)

int mark_student=1;
    NSString *name = [NSString stringWithFormat:@"馬冬梅%@",@(mark_student)];
    int age = mark_student;
    NSString *sex = @"女";
    mark_student ++;
    BOOL results = [fmdb executeUpdate:@"INSERT INTO t_student (name, age, sex) VALUES (?,?,?)",name,@(age),sex];
    //    BOOL result = [fmdb executeUpdateWithFormat:@"insert into t_student (name,age, sex) values (%@,%i,%@)",name,age,sex];
    //3.參數(shù)是數(shù)組的使用方式
    //    BOOL result = [fmdb executeUpdate:@"INSERT INTO t_student(name,age,sex) VALUES  (?,?,?);" withArgumentsInArray:@[name,@(age),sex]];
    if (results) {
        NSLog(@"插入成功");
    } else {
        NSLog(@"插入失敗");
    }

插入成功之后我們會看到相應(yīng)的數(shù)據(jù)


創(chuàng)建表并插入數(shù)據(jù).png

第四步刪除數(shù)據(jù)(注意同上)

這樣就看到之前id為2的馬冬梅2就被刪除了

int idNum=2;
    BOOL deleate=[fmdb executeUpdate:@"delete from t_student where id = ?",@(idNum)];//按照id進行刪除
//    BOOL deleate=[fmdb executeUpdateWithFormat:@"delete from t_student where name = %@",@"王子涵1"];//按照名字進行刪除
    if (deleate) {
        NSLog(@"刪除成功");
    }else{
        NSLog(@"刪除失敗");
    }
刪除數(shù)據(jù).png

第五步修改數(shù)據(jù)

我們將馬冬梅3修改為王小毛

//修改學(xué)生的名字
    NSString *newName = @"王小毛";
    NSString *oldName = @"馬冬梅3";
    BOOL update=[fmdb executeUpdate:@"update t_student set name = ? where name =?",newName,oldName];
    if (update) {
        NSLog(@"修改成功");
    } else {
        NSLog(@"修改失敗");
    }
修改學(xué)生名字.png

第六步查詢數(shù)據(jù)

//查詢整個表
    FMResultSet * resultSet = [fmdb executeQuery:@"select * from t_student"];
    //根據(jù)條件查詢
    //FMResultSet * resultSet = [fmdb executeQuery:@"select * from t_student where id < ?", @(4)];
    //遍歷結(jié)果集合
    while ([resultSet next]) {
        int idNum = [resultSet intForColumn:@"id"];
        NSString *name = [resultSet objectForColumnName:@"name"];
        int age = [resultSet intForColumn:@"age"];
        NSString *sex = [resultSet objectForColumnName:@"sex"];
        NSLog(@"學(xué)號:%@ 姓名:%@ 年齡:%@ 性別:%@",@(idNum),name,@(age),sex);
    }
打印表內(nèi)所有學(xué)生信息.png

這樣我們就完成了數(shù)據(jù)庫中的增、刪俭驮、改回溺、查,最后將我們的表刪除混萝。

//如果表格存在 則銷毀
    BOOL result = [fmdb executeUpdate:@"drop table if exists t_student"];
    if (result) {
        NSLog(@"刪除表成功");
    } else {
        NSLog(@"刪除表失敗");
    }
刪除表.png

這樣就完整的將數(shù)據(jù)庫完整的操作了一遍~~~

歡迎指正R抛瘛!逸嘀!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末车要,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子崭倘,更是在濱河造成了極大的恐慌翼岁,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件司光,死亡現(xiàn)場離奇詭異琅坡,居然都是意外死亡,警方通過查閱死者的電腦和手機飘庄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門脑蠕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事谴仙∮厍螅” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵晃跺,是天一觀的道長揩局。 經(jīng)常有香客問我,道長掀虎,這世上最難降的妖魔是什么凌盯? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮烹玉,結(jié)果婚禮上驰怎,老公的妹妹穿的比我還像新娘。我一直安慰自己二打,他們只是感情好县忌,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著继效,像睡著了一般症杏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瑞信,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天厉颤,我揣著相機與錄音,去河邊找鬼凡简。 笑死逼友,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的秤涩。 我是一名探鬼主播翁逞,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼溉仑!你這毒婦竟也來了挖函?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤浊竟,失蹤者是張志新(化名)和其女友劉穎怨喘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體振定,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡必怜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了后频。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梳庆。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡暖途,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出膏执,到底是詐尸還是另有隱情驻售,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布更米,位于F島的核電站欺栗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏征峦。R本人自食惡果不足惜迟几,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望栏笆。 院中可真熱鬧类腮,春花似錦、人聲如沸蛉加。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽七婴。三九已至,卻和暖如春察滑,著一層夾襖步出監(jiān)牢的瞬間打厘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工贺辰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留户盯,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓饲化,卻偏偏與公主長得像莽鸭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吃靠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

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

  • 1 - 什么是SQlite SQLite是一款輕型的嵌入式數(shù)據(jù)庫 SQLite數(shù)據(jù)庫:可以存儲大批量的數(shù)據(jù) 它占用...
    RadioWaves閱讀 361評論 0 0
  • 一、簡介 1族奢、什么是SQLite SQLite是一款輕型的嵌入式數(shù)據(jù)庫 它占用資源非常的低姥闭,在嵌入式設(shè)備中,可能只...
    青蔥烈馬閱讀 644評論 0 0
  • 目前idea激活有很多方法越走,最簡單的是在license server中輸入激活服務(wù)器棚品,但這類服務(wù)器大多數(shù)都是非法的...
    褪色的記憶1994閱讀 2,455評論 1 3
  • 背景: 藍可兒靠欢,加拿大華裔,卑詩大學(xué)學(xué)生铜跑。2013年1月31日失蹤门怪,之后美國警方公布的錄像顯示藍可兒在失蹤一天前位...
    王子成舟閱讀 471評論 0 0