ios開發常用的儲存方案有兩種 1)使用基於sqlite的開源框架 2)使用蘋果官方的coredata。這裡不討論兩類儲存方式的區別,主要談一談基於sqlit的fmdb框架。
原生的sqlite使用上相當不友好,而且還需要自己去控制多執行緒的訪問,比較麻煩,fmdb因其友好的api,安全的多執行緒操作以及大量的開源人員的維護成為了開源社群的佼佼者。
由於fmdb本質上是對sqlite api以及多執行緒的封裝,這裡是原始碼鏈結將fmdb引入專案,只需要把這些檔案引入進來即可。
1.單執行緒環境下
最簡單的fmdb使用,可以直接使用fmdatabase,這個時候一定要記得手動開啟、關閉db。基本api如下
1)建立
fmdatabase *db = [fmdatabase databasewithpath:@"88888"];
2)開啟
[db open])
3)查詢
fmresultset *s = [db executequery:@"select * from mytable"];
while ([s next])
4)插入,刪除,更新
bool
res = [db
executeupdate
:sql,
@"""
]; 5)關閉連線
2)多執行緒環境下
單個fmdatabase例項不能在多執行緒環境下被使用,因為它本身並不是執行緒安全的,因此在多執行緒的情況下,需要使用fmdb提供的多執行緒介面fmdatabasequeue
使用fmdatabasequeue進行多執行緒程式設計,
這裡的queue,其實是在裡面封裝了乙個順序佇列,確保乙個時刻只有乙個執行緒在使用db例項,這一點在fmdatabasequeue.m原始碼中可以看見
而且在使用queue的時候,我們不需要每次都手動的去open以及close db,從上面截圖可以看到,queue已經幫我們開啟open db,至於close操作,通常是在我們不再使用queue的時候執行
但是有一點需要注意的事,即使你使用了fmdatabasequeue,在多執行緒環境下也要注意,如果你在不同的執行緒裡面呼叫了fmdatabasequeue,且不同執行緒,或者佇列分別生成了自己的fmdatabasequeue,那麼,本質上,你還是會建立多個fmdatabase的連線,這樣還是有可能發生死鎖等問題,因此在實際使用中,最後將fmdatabasequeue單例化。
3、事務
fmdb同時還提供了事務的支援,基本跟上面的用法差不多,使用如下,這是官網上的乙個例子
[queue intransaction:^(fmdatabase *db, bool *rollback)// etc…
[db executeupdate:
@"insert into mytable values (?)"
, [nsnumber
numberwithint:
4]];
}];
FMDB 框架小結
fmdb 框架是對 sqlite 資料庫 c 語言介面的 objective c 封裝,即對sqlite3.h檔案中相關介面的封裝。sqlite3 的使用十分簡單,主要是下面兩個物件 常用函式的使用 fmdb 框架基本也就涉及這幾個函式。typedef struct sqlite3 sqlite3 ...
Iphone中使用FMDB框架
1 首先得例項化乙個fmdatabase物件,這跟sqlitepersistentobjects 派生乙個子類進行操作是不同。接著開啟乙個資料庫 如果沒有會建立乙個資料庫 view plain paths ios下document路徑,document為ios中可讀寫的資料夾 nsarray pat...
FMDB框架的簡單使用 swift
fmdb框架是oc的,在swift中使用,需要建立乙個橋接檔案轉換 在橋接檔案中匯入fndb的標頭檔案 static let shareinstance sqlitetool 建立和開啟乙個資料庫 如果有就直接開啟,如果沒有,建立乙個再開啟 lazy var db fmdatabase 例項化db物...