一、回顧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的使用...