在ios中使用sqlite需要添加庫libsqlite3.0.dylib,并引入頭檔案#import <sqlite3.h>
fmdb對sqlit接口進行了進階封裝,使用上更加友好簡潔。
https://github.com/ccgus/fmdb
fmdb包含以下檔案:
fmdatabase.h
fmdatabase.m
fmdatabaseadditions.h
fmdatabaseadditions.m
fmdatabasepool.h
fmdatabasepool.m
fmdatabasequeue.h
fmdatabasequeue.m
fmresultset.h
fmresultset.m
fmdb使用:
1.fmdatabase 非線程安全,不要在多線程中使用fmdatabase的單例
//用指定的資料庫名執行個體化一個資料庫,沒有此檔案則建立
fmdatabase *db = [fmdatabase databasewithpath:filepath];
"" 在臨時目錄建立一個空的資料庫,資料庫關閉後會自動删除
null 在記憶體中建立一個空的資料庫,資料庫關閉後會自動删除
//打開資料庫,資源不足或權限不夠會打開失敗
if (![db open])
{
nslog(@"資料庫打開失敗");
}
//用完後需要關閉
[db close];
資料庫操作:
查詢操作:select,傳回fmresultset,nil表示查詢失敗;
[db executequery:sql];
fmresultset *rs = [db executequery:@"select * from tablename"];
while ([rs next])
//擷取查詢結果,即使結果隻有一條
更新操作:非select操作都是更新操作,傳回值類型bool,yes:成功,no:失敗
[db executeupdate:sql];
資料庫事務:
當需要插入的資料較多時,使用事務操作會比較快。
[db begintransaction];
//需要執行的操作
[db commit];
fmresultset *rs;
fmresultset可以不手動關閉,當資料庫關閉時,會跟着關閉。
2.fmdatabasequeue 線程安全,所有的資料庫操作會在隊列中順序執行
[fmdatabasequeue *queue = [fmdatabasequeue databasequeuewithpath:path];
queue indatabase:^(fmdatabase *db) {
//
}];
queue intransaction:^(fmdatabase *db, bool *rollback) {
最新内容請見作者的github頁:http://qaseven.github.io/