1什在日常的開發中,我們需要用到離線快取將資料資訊存入資料庫,在沒有網路的時候進行載入,而我們ios用的就是sqlite3資料庫,用原生的sql我們也能實現,但是書寫起來比較麻煩,尤其是其它語言轉過來的程式設計師會感覺吃力,下面我們介紹一款比較優秀還簡單的第三方fmdb
4 fmdb常用類
fmdatabase : 乙個單一的sqlite資料庫,用於執行sql語句。5運算元據庫fmresultset :執行查詢乙個fmdatabase結果集。
fmdatabasequeue :在多個執行緒來執行查詢和更新時會使用這個類
1 建立並且開啟資料庫
//如果應用中使用了多執行緒運算元據庫,那麼就需要使用fmdatabasequeue來保證執行緒安全了。 應用中不可在多個執行緒中共同使用乙個fmdatabase物件運算元據庫,這樣會引起資料庫資料混亂。 為了多執行緒運算元據庫安全,fmdb使用了fmdatabasequeue,使用fmdatabasequeue很簡單,首先用乙個資料庫檔案位址來初使化fmdatabasequeue,然後就可以將乙個閉包(block)傳入indatabase方法中。 在閉包中運算元據庫,而不直接參與fmdatabase的管理1 獲取資料庫物件
nsstring *path=nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes)[0
];test.sqlite"];
database=[fmdatabase databasewithpath:path];
//2 開啟資料庫,如果不存在則建立並且開啟
bool open=[database open];
if(open)
//3 建立表
nsstring * create1=@"
create table if not exists t_user(id integer autoincrement primary key,name varchar)";
bool c1=[database executeupdate:create1];
if(c1)
//4 插入資料
nsstring * insertsql=@"
insert into t_user(id,name) values(?,?)";
//插入語句1
bool inflag1=[database executeupdate:insertsql,@(2),@"
admin"];
//插入語句2
bool inflag2=[database executeupdate:insertsql withargumentsinarray:@[@"
admin
",@(5
)]];
//插入語句3
bool inflag3=[database executeupdatewithformat:@"
insert into t_user(id,name) values(%@,%d)
",@"
admin
",6];
//刪除語句
nsstring * delete=@"
delete from t_user";
bool dflag=[database executeupdate:delete];
if(dflag)
//修改語句
nsstring *update=@"
update t_user set name=? ";
bool flag= [database executeupdate:update,@"
zhangsan"];
if(flag)
//5查詢資料fmdb的fmresultset提供了多個方法來獲取不同型別的資料
//2多執行緒操作
nsstring *path=nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes)[0
];test.sqlite"];
fmdatabasequeue * queue=[fmdatabasequeue databasequeuewithpath:path];
[queue indatabase:^(fmdatabase *db)
}];[queue indatabase:^(fmdatabase *db)
}];[queue indatabase:^(fmdatabase *db)
}];
iOS中FMDB的使用
在ios開發中,如果本地需要做大量的快取,fmdb用的是比較多的,怎麼整合到專案中我這裡就不說了,主要說一下fmdb使用的乙個思路和自己遇到的坑。在我自己開發聊天系統的時候,我一般是用fmdb用來快取最近聯絡人列表和使用者的聊天訊息列表。因為聊天系統,涉及到的讀和寫比較頻繁,所以我會封裝乙個單例類用...
iOS開發 FMDB的使用
獲取沙盒路徑 nsarray filepath nssearchpathfordirectoriesindomains nsdocumentdirectory,nsuserdomainmask,yes nsstring documentpath filepath objectatindex 0 ns...
iOS開發 FMDB使用
demo位址 nslog path database fmdatabase alloc initwithpath path id欄位為自增欄位 name char 256位 age char 3位 char 2位 phone char 13位 address char 100位的 if databa...