ios中原生的sqlite api在使用上相當不友好,在使用時,非常不便。於是,就出現了一系列將sqlite api進行封裝的庫,例如fmdb
、plausibledatabase、sqlitepersistentobjects等,
fmdb (
) 是一款簡潔、易用的封裝庫,這一篇文章簡單介紹下fmdb的使用。
fmdb同時相容arc和非arc工程,會自動根據工程配置來調整相關的記憶體管理**。
fmdatabase : 乙個單一的sqlite資料庫,用於執行sql語句。
fmresultset :執行查詢乙個fmdatabase結果集,這個和android的cursor類似。
fmdatabasequeue :在多個執行緒來執行查詢和更新時會使用這個類。
[cpp]view plain
copy
print?
db = [fmdatabase databasewithpath:database_path];
1、當資料庫檔案不存在時,fmdb會自己建立乙個。
2、 如果你傳入的引數是空串:@"" ,則fmdb會在臨時檔案目錄下建立這個資料庫,資料庫斷開連線時,資料庫檔案被刪除。
3、如果你傳入的引數是 null,則它會建立乙個在記憶體中的資料庫,資料庫斷開連線時,資料庫檔案被刪除。
[cpp]view plain
copy
print?
[db open]
返回bool型。
[cpp]view plain
copy
print?
[db close]
除了查詢操作,fmdb資料庫操作都執行
executeupdate方法,這個方法返回bool型。
看一下例子:
[cpp]view plain
copy
print?
if([db open]) else
[db close];
}
[cpp]view plain
copy
print?
if([db open]) else
[db close];
}
[cpp]view plain
copy
print?
if([db open]) else
[db close];
}
[cpp]view plain
copy
print?
if([db open]) else
[db close];
}
查詢操作使用了
executequery,並涉及到
fmresultset。
[cpp]view plain
copy
print?
if([db open])
[db close];
}
fmdb的fmresultset提供了多個方法來獲取不同型別的資料:
如果應用中使用了多執行緒運算元據庫,那麼就需要使用fmdatabasequeue來保證執行緒安全了。 應用中不可在多個執行緒中共同使用乙個fmdatabase物件運算元據庫,這樣會引起資料庫資料混亂。 為了多執行緒運算元據庫安全,fmdb使用了fmdatabasequeue,
使用fmdatabasequeue很簡單,首先用乙個資料庫檔案位址來初使化fmdatabasequeue,然後就可以將乙個閉包(block)傳入indatabase方法中。 在閉包中運算元據庫,而不直接參與fmdatabase的管理。
[cpp]view plain
copy
print?
fmdatabasequeue * queue = [fmdatabasequeue databasequeuewithpath:database_path];
dispatch_queue_t q1 = dispatch_queue_create("queue1"
, null);
dispatch_queue_t q2 = dispatch_queue_create("queue2"
, null);
dispatch_async(q1, ^ else
}];
} });
dispatch_async(q2, ^ else
}];
} });
iOS資料庫操作 基於C語言API
sqlite3 db nsstring path nssearchpathfordirectoriesindomains nsdocumentationdirectory,nsuserdomainmask,yes firstobject const char cpath path utf8strin...
iOS資料庫相關的總結
ios lkdbhelper實體物件對映資料庫 第三方框架 在fmdb的基礎上進行二次封裝 全面支援 nsarray,nsdictionary,modelclass,nsnumber,nsstring,nsdate,nsdata,uicolor,uiimage,cgrect,cgpoint,cgsi...
資料庫的相關操作
一.主鍵 主鍵 表中經常有乙個列或多列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵,通過它可強制表的實體完整性。當建立或更改表時可通過定義 primary key 約束來建立主鍵。乙個表只能有乙個 primary key 約束,而且 primary key 約束中的列不能接受 ...