iOS 資料庫第三方框架FMDB詳細講解

2022-08-19 01:33:12 字數 2445 閱讀 4910

初識fmdb

ios中原生的sqliteapi在進行資料儲存的時候,需要使用c語言中的函式,操作比較麻煩。於是,就出現了一系列將sqlite api進行封裝的庫,例如fmdbplausibledatabasesqlitepersistentobjects等。

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會在臨...