iOS開發之FMDB

前言

      SQLite (http://www.sqlite.org/docs.html) 是一個輕量級的關係數據庫。iOS SDK 很早就支持了 SQLite,在使用時,只須要加入 libsqlite3.dylib 依賴以及引入 sqlite3.h 頭文件便可。可是,原生的 SQLite API 在使用上至關不友好,在使用時,很是不便。因而,開源社區中就出現了一系列將 SQLite API 進行封裝的庫,而 FMDB (https://github.com/ccgus/fmdb) 則是開源社區中的優秀者。FMDB 同時兼容 ARC 和非 ARC 工程,會自動根據工程配置來調整相關的內存管理代碼。並且他提供了多線程安全的數據庫操做方法,有效地防止數據混亂。html

     FMDB是將sqlite封裝處理的,因此使用FMDB以前也必須導入libsqlite3.dylib框架。git

FMDB經常使用類github

FMDatabase :          一個單一的SQLite數據庫,用於執行SQL語句。sql

FMResultSet :          執行查詢一個FMDatabase結果集。    數據庫

FMDatabaseQueue :在多個線程來執行查詢和更新時會使用這個類。安全


建立數據庫

 

NSString*path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject];多線程

path = [path stringByAppendingString:@"testDB.sqlite"];框架

db = [FMDatabase databaseWithPath:path];  //指定路徑建立一個數據庫 dB是一個全局變量線程

一、testDB.sqlite不存在,系統會在路徑下自動建立一個數據庫。若在該路徑以前存在這樣的數據庫,不會重複建立。orm

二、若是path爲@"",系統會在一個臨時的目錄(並非沙盒中的temp文件,這個臨時目錄是系統自動分配的)本身建立一個數據庫,數據庫斷開鏈接後會自動刪除。

三、若是path爲nil,系統會在內存中建立一個數據庫,數據庫會在關閉後被銷燬。

在數據庫中建表

 


數據庫中建立表

0、數據庫操做前記得打開,操做結束後記得關閉

一、在FMDB中,除查詢之外的全部操做,都稱爲「更新」。例如,create、drop、insert、update、delete等都採用executeUpdate來進行操做,select採用executeQuery操做。

二、executeUpdate方法返回一個BOOL值來代表是否操做成功。executeQuery方法返回一個FMResultSet(結果集),存放查詢到的結果。

在表中插入數據

 


表中插入數據

一、?作佔位符的話,傳進來的值必須是對象類型。

二、FMDB的更新方法有不少,有興趣的朋友能夠都試試。

- (BOOL)executeUpdate:(NSString*)sql, ...

- (BOOL)executeUpdateWithFormat:(NSString*)format, ...

- (BOOL)executeUpdate:(NSString*)sql withArgumentsInArray:(NSArray *)arguments

二、sqlite的增刪改(沒有查),跟上面的格式其實都是同樣的。惟一的不一樣的就是sqlite語句。sqlite語句不會寫的直接百度搜索便可。

在表中查詢數據

 


查詢數據

一、FMResultSet提供了不少方法來得到所需的格式的值:stringForColumn  doubleForColumn boolForColumn等。不只能經過列名來取數據,還能經過列的下標取數據。

二、FMDB的查詢方法也有不少,一樣能夠試試

- (FMResultSet *)executeQuery:(NSString*)sql, ...

- (FMResultSet *)executeQueryWithFormat:(NSString*)format, ...

- (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray *)arguments

相關文章
相關標籤/搜索