iOS FMDB 資料庫 詳解

2021-08-03 14:47:51 字數 3676 閱讀 9514

一、簡單說明

1.什麼是fmdb

fmdb是ios平台的sqlite資料庫框架

fmdb以oc的方式封裝了sqlite的c語言api

2.fmdb的優點

使用起來更加物件導向,省去了很多麻煩、冗餘的c語言**

對比蘋果自帶的core data框架,更加輕量級和靈活

提供了多執行緒安全的資料庫操作方法,有效地防止資料混亂

fmdb pk sqlite

缺點:

3.fmdb的github位址

二、核心類

fmdb有三個主要的類

(1)fmdatabase

乙個fmdatabase物件就代表乙個單獨的sqlite資料庫

用來執行sql語句

(2)fmresultset

使用fmdatabase執行查詢後的結果集

(3)fmdatabasequeue

用於在多執行緒中執行多個查詢或更新,它是執行緒安全的

三、開啟資料庫

通過指定sqlite資料庫檔案路徑來建立fmdatabase物件

fmdatabase *db = [fmdatabase databasewithpath:path];

if (![db open])

檔案路徑有三種情況

(1)具體檔案路徑

如果不存在會自動建立

(2)空字串@""

會在臨時目錄建立乙個空的資料庫

當fmdatabase連線關閉時,資料庫檔案也被刪除

(3)nil

會建立乙個記憶體中臨時資料庫,當fmdatabase連線關閉時,資料庫會被銷毀

四、執行更新

在fmdb中,除查詢以外的所有操作,都稱為「更新」

create、drop、insert、update、delete等

使用executeupdate:方法執行更新

- (bool)executeupdate:(nsstring*)sql, ...

- (bool)executeupdatewithformat:(nsstring*)format, ...

- (bool)executeupdate:(nsstring*)sql withargumentsinarray:(nsarray *)arguments

示例[db executeupdate:@"update t_student set age = ? where name = ?;", @20, @"jack"]

五、執行查詢

查詢方法

- (fmresultset *)executequery:(nsstring*)sql, ...

- (fmresultset *)executequerywithformat:(nsstring*)format, ...

- (fmresultset *)executequery:(nsstring *)sql withargumentsinarray:(nsarray *)arguments

示例// 查詢資料

fmresultset *rs = [db executequery:@"select * from t_student"];

// 遍歷結果集

while ([rs next])

二、 fmdb使用步驟

匯入libsqlite3.0框架,匯入標頭檔案fmdatabase.h**實現,與sqlite使用步驟相似,建立資料庫路徑,獲得資料庫路徑,開啟資料庫,然後對資料庫進行增、刪、改、查操作,最後關閉資料庫。

資料庫建立

建立fmdatabase物件時引數為sqlite資料庫檔案路徑,該路徑可以是以下三種方式之一

資料庫使用fmdb框架**操作

使用fmdatabase類執行資料庫命令sql

一切不是select命令的命令都視為更新。這包括 creat,update,insert,alter,begin,commit,detach,delete,drop,end,explain,vacuum,replace等。

簡單來說,只要不是以select開頭的命令都是更新命令。

執行更新返回乙個bool值。yes表示 執行成功,否則表示有錯誤。你可以呼叫 -lasterrormessage 和 -lasterrorcode方法來得到更多資訊。

fmresultset獲取不同資料格式的方法

使用fmresultset獲取查詢語句結果

//查詢整個表

fmresultset *resultset = [self.db execute query:@「select * from t_student;」];

//根據條件查詢

fmresultset *resultset = [self.db executequery:@「select * from t_student where id;」@(14)];

//遍歷結果集合

while ([resultset next])

使用fmdatabase類執行資料庫銷毀命令sqldrop ...

//如果**存在 則銷毀

[self.db executeupadate:@「drop

table

ifexists t_student;」];

使用fmdatabasequeue類實現多執行緒操作

在多個執行緒中同時使用乙個fmdatabase例項是不明智的。現在你可以為每 個執行緒建立乙個fmdatabase物件,不要讓多個執行緒分享同乙個例項,他無 法在多個執行緒中同事使用。否則程式會時不時崩潰或者報告異常。所以,不要 初始化fmdatabase物件,然後在多個執行緒中使用。這時候,我們就需要使 用fmdatabasequeue來建立佇列執行事務。

//1.建立佇列

fmdatabasequeue *queue = [fmdatabasequeue

databasequeuewithpath:apath];

//2.把任務包裝到事務裡

[queue intransaction:^(fmdatabase *db, bool *rollback)

}];

好了,到此為止,相信你已經能夠使用fmdb進行資料持久化了,它的好與壞 只有在不斷地使用過程中才能發現了解。所以,希望大家學會了以後還是要多 寫多練多使用。另外,誠心希望大家多提寶貴意見,或者溝通一些好的想法。

謝謝!!!

iOS FMDB 資料庫相關

在iphone上是採用sqlite進行資料儲存是我一種比較習慣性的做法。一般在其他平台也比較習慣用sqlite,比如android。而iphone上有一些封裝好的第三方框架提供使用,更節省了許多時間。如 sqlitepersistentobjects fmdb。今天查詢了這個兩個框架,感覺fmdb的...

iOS FMDB資料庫加密相關

資料庫加密一般有兩種方式 1 對所有資料進行加密 2 對資料庫檔案加密 處於客戶端效能的考慮,通常我們對資料庫檔案進行加密,在ios上用的比較多的是 sqlcipher,由於原生提供的sqlite api是c語言實現的,通常我們會用乙個在github上比較有名的乙個工具庫fmdb,fmdb對原生的s...

iOS FMDB操作sqlite資料庫

一 簡單說明 1.什麼是fmdb fmdb是ios平台的sqlite資料庫框架 fmdb以oc的方式封裝了sqlite的c語言api 2.fmdb的優點 使用起來更加物件導向,省去了很多麻煩 冗餘的c語言 對比蘋果自帶的core data框架,更加輕量級和靈活 提供了多執行緒安全的資料庫操作方法,有...