初識fmdb
ios中原生的sqlite
api在進行資料儲存的時候,需要使用c語言中的函式,操作比較麻煩。於是,就出現了一系列將sqlite api進行封裝的庫,例如fmdb
、plausibledatabase
、sqlitepersistentobjects
等。
fmdb是一款簡潔、易用的封裝庫。因此,在這裡推薦使用第三方框架fmdb,它是對libsqlite3框架的封裝,用起來的步驟與sqlite使用類似,並且它對於多執行緒的併發操作進行了處理,所以是執行緒安全的。fmdb pk sqlite
缺點:fmdb框架中重要的框架類
fmresultset
fmdatabasequeue
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 if exists t_student;」];
使用fmdatabasequeue
類實現多執行緒操作
在多個執行緒中同時使用乙個fmdatabase例項是不明智的。現在你可以為每 個執行緒建立乙個fmdatabase物件,不要讓多個執行緒分享同乙個例項,他無 法在多個執行緒中同事使用。否則程式會時不時崩潰或者報告異常。所以,不要 初始化fmdatabase物件,然後在多個執行緒中使用。這時候,我們就需要使 用fmdatabasequeue來建立佇列執行事務。
//1.建立佇列
fmdatabasequeue *queue = [fmdatabasequeue
databasequeuewithpath:apath];
//2.把任務包裝到事務裡
[queue intransaction:^(fmdatabase *db, bool *rollback)
}];
好了,到此為止,相信你已經能夠使用fmdb進行資料持久化了,它的好與壞 只有在不斷地使用過程中才能發現了解。所以,希望大家學會了以後還是要多 寫多練多使用。另外,誠心希望大家多提寶貴意見,或者溝通一些好的想法。^^ IOS第三方資料庫 FMDB
ios中原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,就出現了一系列將sqlite api進行封裝的庫,例如fmdb plausibledatabase sqlitepersistentobjects等,fmdb 是一款簡潔 易用的封裝庫,這一篇文章簡單介紹下fmdb的使用...
IOS第三方資料庫 FMDB
ios中原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,就出現了一系列將sqlite api進行封裝的庫,例如fmdb plausibledatabase sqlitepersistentobjects等,fmdb 是一款簡潔 易用的封裝庫,這一篇文章簡單介紹下fmdb的使用...
iOS 第三方庫 FMDB
對sqlite api進行封裝的庫 fmdb同時相容arc和非arc工程,會自動根據工程配置來調整相關的記憶體管理 db fmdatabase databasewithpath database path 1 當資料庫檔案不存在時,fmdb會自己建立乙個。2 如果你傳入的引數是空串 則fmdb會在臨...