一、簡單說明
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框架,更加輕量級和靈活 提供了多執行緒安全的資料庫操作方法,有...