天天看點

iOS資料庫操作之FMDB

  在ios中使用sqlite需要添加庫libsqlite3.0.dylib,并引入頭檔案#import <sqlite3.h>

  fmdb對sqlit接口進行了進階封裝,使用上更加友好簡潔。

  https://github.com/ccgus/fmdb

  fmdb包含以下檔案:

fmdatabase.h

fmdatabase.m

fmdatabaseadditions.h

fmdatabaseadditions.m

fmdatabasepool.h

fmdatabasepool.m

fmdatabasequeue.h

fmdatabasequeue.m

fmresultset.h

fmresultset.m

  fmdb使用:

  1.fmdatabase 非線程安全,不要在多線程中使用fmdatabase的單例

//用指定的資料庫名執行個體化一個資料庫,沒有此檔案則建立

fmdatabase *db = [fmdatabase databasewithpath:filepath];

"" 在臨時目錄建立一個空的資料庫,資料庫關閉後會自動删除

null 在記憶體中建立一個空的資料庫,資料庫關閉後會自動删除

//打開資料庫,資源不足或權限不夠會打開失敗

if (![db open])

{

nslog(@"資料庫打開失敗");

}

//用完後需要關閉

[db close];

  資料庫操作:

  查詢操作:select,傳回fmresultset,nil表示查詢失敗;

[db executequery:sql];

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

while ([rs next])

//擷取查詢結果,即使結果隻有一條

  更新操作:非select操作都是更新操作,傳回值類型bool,yes:成功,no:失敗

  [db executeupdate:sql];

  資料庫事務:

  當需要插入的資料較多時,使用事務操作會比較快。

[db begintransaction];

//需要執行的操作

[db commit];

fmresultset *rs;

fmresultset可以不手動關閉,當資料庫關閉時,會跟着關閉。

  2.fmdatabasequeue 線程安全,所有的資料庫操作會在隊列中順序執行

[fmdatabasequeue *queue = [fmdatabasequeue databasequeuewithpath:path];

queue indatabase:^(fmdatabase *db) {

//

}];

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

最新内容請見作者的github頁:http://qaseven.github.io/