iOS中的資料庫 使用FMDB

2022-05-27 17:27:10 字數 2975 閱讀 4892

一、回顧ios中的資料儲存方式

1、xml屬性列表(plist)

寫入oc的一些基本資料型別,不是所有物件都可以寫入

2、preference(偏好設定)

本質還是通過「plist」來儲存資料,但是使用簡單(無需關注檔案、資料夾路徑和名稱)

3、nskeyedarchiver歸檔(nscoding)

把任何物件,直接儲存為檔案的方式;

4、sqlite3

當非常大量的資料儲存時使用;

5、coredata

就是 ios對sqlite的封裝。

二、fmdb介紹

1.fmdb

(1)fmdb是ios平台的sqlite資料庫框架 

(2)fmdb以oc的方式封裝了sqlite的c語言api

2、fmdb的優點 

(1)使用起來更加物件導向,省去了很多麻煩、冗餘的c語言** 

(2)對比蘋果自帶的core data框架,更加輕量級和靈活 

(3)提供了多執行緒安全的資料庫操作方法,有效地防止資料混亂

3、fmdb三個主要的類 

三、開啟資料庫(可以建立管理工具類單例)

1、通過指定sqlite資料庫檔案路徑來建立fmdatabase物件

(1)fmdatabase *db = [fmdatabase databasewithpath:path];

2、檔案路徑path有三種情況

(1)具體檔案路徑

如果不存在會自動建立

(2)空字串@""

會在臨時目錄建立乙個空的資料庫

當fmdatabase連線關閉時,資料庫檔案也被刪除

(3)nil

會建立乙個記憶體中臨時資料庫,當fmdatabase連線關閉時,資料庫會被銷毀

四、更新操作(fmdatabase)

1、在fmdb中,除查詢以外的所有操作,都稱為「更新」

2、使用 executestatements (可以一次執行多條sql語句)

- (bool)executestatements:(nsstring *)sql

- (bool)executestatements:(nsstring *)sql withresultblock:

3、使用executeupdate(一次執行一條sql語句,可帶引數(sql的預編譯))

- (bool)executeupdate:(nsstring*)

- (bool)executeupdatewithformat:(nsstring*)format

- (bool)executeupdate:(nsstring*)sql withargumentsinarray:(nsarray *)arguments

示例[db executeupdate:@"update t_student set age = ? where name = ?;", @20, @"jack"]

五、執行查詢(fmdatabase)

1、查詢方法

- (fmresultset *)executequery:(nsstring*)sql

- (fmresultset *)executequerywithformat:(nsstring*)format

- (fmresultset *)executequery:(nsstring *)sql withargumentsinarray:(nsarray *)arguments

示例// 查詢資料

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

六、關於fmdatabasequeue

1、提供一些同步佇列運算元據庫的方法

(1)- (void)indatabase:(void (^)(fmdatabase *db))block  

(2)- (void)intransaction:(void (^)(fmdatabase *db, bool *rollback))block  **中建立了fmdatabase型別的資料庫,可以直接拿來用

2、提供事務操作方式:

(1)快速實現插入操作

(2)實現備份回滾

(3)保證同時執行 : transaction.begin 和transaction.commit 之間的**保證同時執行完畢才生效

七、關於fmresultset結果集

1、一些方法圍繞「column」的方法,可以根據列進行不同的操作,返回不同的搜尋結果

objectforcolumn:

intforcolumn:

longforcolumn:

longlongintforcolumn:

boolforcolumn:

doubleforcolumn:

stringforcolumn:

dateforcolumn:

dataforcolumn:

datanocopyforcolumn:

utf8stringforcolumnindex:

2、next,判斷結果及是否有下乙個元素

(1)遍歷結果集

while ([rs next]) {

nsstring *name = [rs stringforcolumn:@"name"];

int age = [rs intforcolumn:@"age"];

double score = [rs doubleforcolumn:@"score"];

iOS 資料庫 FMDB使用

好久沒有寫oc 了,幹了一年的cocos2d x,終於又回歸ios了,這段時間翻看了以前寫的,試圖控制項基本總結完畢,還有一些不常用的以後再補充。後面有時間就寫一些其他的。今天就先寫一下資料庫和乙個三方fmdb。其實ios的資料儲存形式有很多,比如 檔案形式,nsuserdefault,資料庫等。檔...

iOS 資料庫操作 使用FMDB

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

iOS資料庫操作 使用FMDB

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