iOS中FMDB的使用

2021-07-16 20:55:26 字數 2708 閱讀 5428

1什在日常的開發中,我們需要用到離線快取將資料資訊存入資料庫,在沒有網路的時候進行載入,而我們ios用的就是sqlite3資料庫,用原生的sql我們也能實現,但是書寫起來比較麻煩,尤其是其它語言轉過來的程式設計師會感覺吃力,下面我們介紹一款比較優秀還簡單的第三方fmdb

4 fmdb常用類

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

fmresultset :執行查詢乙個fmdatabase結果集。

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

5運算元據庫

1 建立並且開啟資料庫

//

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提供了多個方法來獲取不同型別的資料

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

//

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...