iOS資料持久化 FMDB

2022-09-03 21:45:22 字數 2201 閱讀 4788

ios中原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,就出現了一系列將sqlite api進行封裝的庫,例如fmdb、plausibledatabase、sqlitepersistentobjects等,fmdb ( 是一款簡潔、易用的封裝庫,這一篇文章簡單介紹下fmdb的使用。

fmdb同時相容arc和非arc工程,會自動根據工程配置來調整相關的記憶體管理**。

fmdatabase : 乙個單一的sqlite資料庫,用於執行sql語句。

fmresultset :執行查詢乙個fmdatabase結果集,這個和android的cursor類似。

fmdatabasequeue :在多個執行緒來執行查詢和更新時會使用這個類。

1 db = [fmdatabase databasewithpath:database_path];

1、當資料庫檔案不存在時,fmdb會自己建立乙個。

2、 如果你傳入的引數是空串:@"" ,則fmdb會在臨時檔案目錄下建立這個資料庫,資料庫斷開連線時,資料庫檔案被刪除。

3、如果你傳入的引數是 null,則它會建立乙個在記憶體中的資料庫,資料庫斷開連線時,資料庫檔案被刪除。

1 [db open]

返回bool型。

關閉資料庫:

1 [db close]

除了查詢操作,fmdb資料庫操作都執行executeupdate方法,這個方法返回bool型。

看一下例子:

1

if([db open]) else 9

[db close];

1011 }

1

if([db open]) else

16[db close];

1718 }

1

if([db open]) else

11[db close];

1213 }

1

if([db open]) else

13[db close];

1415 }

查詢操作使用了executequery,並涉及到fmresultset。

1

if([db open])

12[db close];

13 }

fmdb的fmresultset提供了多個方法來獲取不同型別的資料:

如果應用中使用了多執行緒運算元據庫,那麼就需要使用fmdatabasequeue來保證執行緒安全了。 應用中不可在多個執行緒中共同使用乙個fmdatabase物件運算元據庫,這樣會引起資料庫資料混亂。 為了多執行緒運算元據庫安全,fmdb使用了fmdatabasequeue,使用fmdatabasequeue很簡單,首先用乙個資料庫檔案位址來初使化fmdatabasequeue,然後就可以將乙個閉包(block)傳入indatabase方法中。 在閉包中運算元據庫,而不直接參與fmdatabase的管理。

1 fmdatabasequeue * queue =[fmdatabasequeue databasequeuewithpath:database_path];  

2 dispatch_queue_t q1 = dispatch_queue_create("

queue1

", null);

3 dispatch_queue_t q2 = dispatch_queue_create("

queue2

", null);

45 dispatch_async(q1, ^ else

23}];

24}

25});

2627 dispatch_async(q2, ^ else

43}];

44}

45 });

iOS 資料持久化 FMDB

一 簡介 1.什麼是fmdb fmdb是ios平台的sqlite資料庫框架 fmdb以oc的方式封裝了sqlite的c語言api 2.fmdb的優點 使用起來更加物件導向,省去了很多麻煩 冗餘的c語言 對比蘋果自帶的core data框架,更加輕量級和靈活 提供了多執行緒安全的資料庫操作方法,有效地...

iOS 資料持久化之FMDB

新建乙個專案名為qzfmdb,開啟終端 cd users hongde desktop qzfmdb vim podfile鍵盤敲 i 輸入 target qzfmdb dopod jqfmdb end wq 回車鍵 pod install關掉專案 重新開啟qzfmdb.xcworkspace vi...

iOS終端資料持久化

ios有很多資料持久化技術,包括傳統的資料庫,但也有一些較新的技術,它主要的持久化技術有 資料庫 屬性列表 物件歸檔和。本節將分別介紹這四種持久化方式,輔助本文在設計與實現中針對不同的需求選擇合適的資料持久化方式。資料庫技術被廣泛的使用在各大系統中,資料庫也是乙個系統的核心部分,資料庫管理系統如今發...