FMDB的使用

iOS 中原生的 SQLite API 在使用上相當(dāng)不友好诫肠,在使用時,非常不便物独。于是,就出現(xiàn)了一系列將SQLite API進(jìn)行封裝的庫氯葬,例如 FMDB挡篓、PlausibleDatabase、sqlitepersistentobjects等帚称,FMDB 是一款簡潔官研、易用的封裝庫,這一篇文章簡單介紹下FMDB的使用世杀。coreData 與 FMDB 的區(qū)別:
coreData:自動生成 SQL 語句阀参,不能自己設(shè)置,個性化的瞻坝、優(yōu)化的等 SQL 語句不能實(shí)現(xiàn)蛛壳;
FMDB:可以自己定制不同的 SQL 語句,擴(kuò)展性好所刀;

一衙荐、在項(xiàng)目中添加FMDB庫,具體參見 使用手動導(dǎo)入或 pod

二浮创、在FMDB中有三個主要的類:
FMDatabase - 代表一個 SQLite 數(shù)據(jù)庫忧吟。用于執(zhí)行 SQL 語句。
FMResultSet - 代表 FMDatabase 執(zhí)行一個查詢的結(jié)果斩披。
FMDatabaseQueue - 如果你想在多個線程執(zhí)行查詢和更新,你會想要使用這個類溜族。這是“線程安全”一節(jié)中描述。

三垦沉、數(shù)據(jù)庫創(chuàng)建
只要滿足以下三條中的任意一條煌抒,一個 FMDatabase 就創(chuàng)建一個 SQLite 數(shù)據(jù)庫文件路徑:
1)當(dāng)數(shù)據(jù)庫文件不存在時,fmdb 會自己創(chuàng)建一個厕倍。
2)如果你傳入的參數(shù)是空串:@"" 寡壮,則 fmdb 會在臨時文件目錄下創(chuàng)建這個數(shù)據(jù)庫,數(shù)據(jù)庫斷開連接時,數(shù)據(jù)庫文件被刪除况既。
3)如果你傳入的參數(shù)是 NULL这溅,則它會建立一個在內(nèi)存中的數(shù)據(jù)庫,數(shù)據(jù)庫斷開連接時棒仍,數(shù)據(jù)庫文件被刪除悲靴。


1.jpg

四、打開數(shù)據(jù)庫


五降狠、關(guān)閉數(shù)據(jù)庫


六对竣、執(zhí)行更新
除了查詢操作庇楞,F(xiàn)MDB數(shù)據(jù)庫操作都執(zhí)行 executeUpdate 方法榜配,這個方法返回 BOOL 型。



以下是示例代碼:


七吕晌、執(zhí)行查詢



八蛋褥、事務(wù)
FMDatabase 可以開始提交事務(wù)通過調(diào)用一個適當(dāng)?shù)姆椒ɑ驁?zhí)行開始/結(jié)束事務(wù)的語句。

多語句和批處理:你可以使用 FMDatabase 的 executestatements:withresultblock:方法在字符串去處理多語句睛驳。



當(dāng)提供一個 SQL 語句給 fmdb 時烙心,在插入錢你不應(yīng)該試圖“清理”任何值。相反乏沸,你應(yīng)該使用標(biāo)準(zhǔn)的SQLite綁定的語法:
INSERT INTO myTable VALUES (?, ?, ?, ?)




另外淫茵,您也可以使用命名參數(shù)語法:
INSERT INTO authors (identifier, name, date, comment) VALUES (:identifier, :name, :date, :comment)

The parameters must start with a colon. SQLite itself supports other characters, but internally the dictionary keys are prefixed with a colon, do not include the colon in your dictionary keys.



The key point is that one should not use NSString method stringWithFormat to manually insert values into the SQL statement, itself. Nor should one Swift string interpolation to insert values into the SQL. Use ? placeholders for values to be inserted into the database (or used in WHERE clauses in SELECT statements).

九、使用 FMDatabaseQueue 和線程安全(具體參照 FMDB 的 github 的readMe )
如果應(yīng)用中使用了多線程操作數(shù)據(jù)庫蹬跃,那么就需要使用 FMDatabaseQueue 來保證線程安全了匙瘪。 應(yīng)用中不可在多個線程中共同使用一個 FMDatabase 對象操作數(shù)據(jù)庫,這樣會引起數(shù)據(jù)庫數(shù)據(jù)混亂蝶缀。 為了多線程操作數(shù)據(jù)庫安全丹喻, FMDB 使用了 FMDatabaseQueue,使用 FMDatabaseQueue 很簡單翁都,首先用一個數(shù)據(jù)庫文件地址來初使化 FMDatabaseQueue碍论,然后就可以將一個閉包(block)傳入 inDatabase 方法中。 在閉包中操作數(shù)據(jù)庫柄慰,而不直接參與 FMDatabase 的管理鳍悠。


更多文章

CocoaPods開源庫的搭建
CocoaPods搭建私有庫
CocoaPods搭建私有庫遇到問題
CocoaPods私有庫的升級維護(hù)
SKStoreReviewController之程序內(nèi)評價
App應(yīng)用程序圖標(biāo)的動態(tài)更換
開源框架 MGJRouter_Swift
iOS的MVP設(shè)計(jì)模式
iOS插件化
iOS FMDB的使用
Swift之ReactiveSwift
OC之ReactiveCocoa
OC之ReactiveCocoa進(jìn)階
iOS 性能考慮

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市坐搔,隨后出現(xiàn)的幾起案子藏研,更是在濱河造成了極大的恐慌,老刑警劉巖薯蝎,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遥倦,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)袒哥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門缩筛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人堡称,你說我怎么就攤上這事瞎抛。” “怎么了却紧?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵桐臊,是天一觀的道長。 經(jīng)常有香客問我晓殊,道長断凶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任巫俺,我火速辦了婚禮认烁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘介汹。我一直安慰自己硕噩,他們只是感情好余佛,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布还绘。 她就那樣靜靜地躺著捌刮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叹卷。 梳的紋絲不亂的頭發(fā)上撼港,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音豪娜,去河邊找鬼餐胀。 笑死,一個胖子當(dāng)著我的面吹牛瘤载,可吹牛的內(nèi)容都是我干的否灾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼鸣奔,長吁一口氣:“原來是場噩夢啊……” “哼墨技!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起挎狸,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤扣汪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后锨匆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體崭别,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冬筒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了茅主。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舞痰。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖诀姚,靈堂內(nèi)的尸體忽然破棺而出响牛,到底是詐尸還是另有隱情,我是刑警寧澤赫段,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布呀打,位于F島的核電站,受9級特大地震影響糯笙,放射性物質(zhì)發(fā)生泄漏贬丛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一炬丸、第九天 我趴在偏房一處隱蔽的房頂上張望瘫寝。 院中可真熱鬧蜒蕾,春花似錦稠炬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至撤摸,卻和暖如春毅桃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背准夷。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工钥飞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衫嵌。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓读宙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親楔绞。 傳聞我的和親對象是個殘疾皇子结闸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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