最近在專案中用到了fmdb框架下的本地資料庫搭建,感覺非常方便,在學習使用的同時,寫下這篇文章做個總結:
首先,將框架匯入需要使用的類中
#import
"fmdb/fmdb.h"
然後在專案中新增libzsqlite3.tbd
完成以上任務後就可以正式開始使用fmdb框架啦。
關於fmdb的基礎教程,可以參考:由於講述fmdb基礎操作的文章網上太多,所以在次不再贅述。
下面主要講的是我自己使用fmdb時感覺需要注意的地方。
首先是fmbd用來儲存資料模型。
在ios開發中資料轉模型是非常常用的方法,但是資料庫本身是不支援儲存模型資料的,所以我們如果想將資料模型存入fmdb中需要費些周折。首先,資料庫是支援儲存二進位制檔案的,資料型別為blod。
所以如果想要將資料模型儲存進資料庫中就需要先將資料模型轉化為二進位制檔案,也就是nsdata,很巧,我們知道歸檔可以做到這些,所以首先要做的就是將模型歸檔,然後轉化為nsdata格式,再將nsdata格式的資料模型存入資料庫中即可,同樣的,從資料庫中取出資料後也要進行反歸檔,然後才能變為資料模型。
**如下:
fmdatabase *db = [fmdatabase databasewithpath:sql_path];
nsstring *sql;
if ([db open]) else
sql = @"select id from historytable where comicsetname = ?";
fmresultset *rs = [db executequery:sql,self.comicset.name];
if ([rs next]) return;
sql = @"insert into historytable(comic,comicset,comicsetname) values(?,?,?)";
nsdata *comicdata = [nskeyedarchiver archiveddatawithrootobject:self.comic];
nsdata *comicsetdata = [nskeyedarchiver archiveddatawithrootobject:self.comicset];
res = [db executeupdate:sql,comicdata,comicsetdata,self.comicset.name];
if (res) else
[db close];
}
在將資料模型存入資料庫中是,還有其他許多雷點,例如:
當沒有儲存資料的oc自帶資料型別被歸檔存入資料庫再取出時,其本身不再指向某片空間,需要重新alloc,init,不然無法使用,需要注意。
還有,就是
當需要存入資料庫中的資料不是物件而是基礎資料型別時,需要使用格式輸出的方法,不然會出現錯誤,程式無法執行!!!
[db executequerywithformat:];
目前網上流傳的fmdb使用方法的教程講的都太少,如果有時間,我會盡力寫一篇比較詳細完善的fmdb常用方法的教程,希望不要成為有生之年系列。。。
select 『comic』,『comicset』 from historytable order by 『id』 desc 降序排列
select 『comic』,『comicset』 from historytable order by 『id』 asc 公升序排列
獲取當前資料庫中資料條數
nsstring *sql = @"select count(id) from historytable";
nsinteger idcount = 0;
idcount = [db intforquery:sql];
刪除資料庫中前5條資料
sql = [nsstring stringwithformat:@"delete from historytable where id in (select id from historytable order by id asc limit %i)",idcount - 20];
bool res = [db executeupdate:sql];
MySQL資料庫的簡單操作指令之DML語言
資料操縱語言dml data manipulation language 使用者通過它可以實現對資料庫的基本操作。這裡說的基本操作主要指對資料庫的增刪改查!這四項基本功能也是資料庫操作的主要功能。有什麼用?資料操作語言 dml 可用於對資料庫進行增加資料,修改資料,刪除資料,查詢資料等等 示例增加 ...
資料庫操作 使用FMDB
ios中原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,就出現了一系列將sqlite api進行封裝的庫,例如fmdb plausibledatabase sqlitepersistentobjects等,fmdb 是一款簡潔 易用的封裝庫,這一篇文章簡單介紹下fmdb的使用...
資料庫操作 使用FMDB
ios中原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,就出現了一系列將sqlite api進行封裝的庫,例如fmdb plausibledatabase sqlitepersistentobjects等,fmdb 是一款簡潔 易用的封裝庫,這一篇文章簡單介紹下fmdb的使用...