免費開源的iOS開發學習平臺

                                                FMDB:1-基本介紹

                                                通常情況下,由于原生的SQLite使用起來非常繁瑣,所以我們一般不會直接使用,取而代之的是FMDB。FMDB是使用Objective-C對SQLite的API進行封裝的庫,使用起來會比直接使用C語言API容易。FMDB使用起來更加面向對象,因而省去了很多麻煩,并且還提供了更方便的方法來拼接SQL語句。

                                                下載與安裝

                                                我們可以到github下載最新版本的FMDB,下載的地址為:https://github.com/ccgus/fmdb。點擊【Clone or download】即可下載最新版本的FMDB到本地硬盤中。

                                                FMDB的安裝推薦使用CocoaPods,使用CocoaPods安裝的步驟如下:

                                                • 打開終端;
                                                • 使用cd命令導航到工程根目錄,執行pod init
                                                • 在Podfile文件中加上pod 'FMDB'
                                                pod 'FMDB'
                                                
                                                • 在終端中執行pod update, 也可以使用pod update --no-repo-update來加快更新速度。

                                                另外,也可以使用手工方式安裝FMDB。解壓下載到的fmdb-master.zip文件后,把其中的src/fmdb文件夾添加到工程中。

                                                在需要使用FMDB的類中,導入FMDB的頭文件,即可使用其中的方法。

                                                #import "FMDB.h"
                                                

                                                FMDB核心類介紹

                                                在FMDB中,提供了3個核心類。

                                                • FMDatabase:數據庫類,所有的SQL語句都需要在數據庫中執行;
                                                • FMResultSet:執行SELECT語句后,查詢數據庫的結果集。
                                                • FMDatabaseQueue:如果要在多線程上執行查詢和更新,需要用到這個類。

                                                創建數據庫

                                                如果需要創建一個數據庫庫,只需要給FMDatabase類提供一個數據庫文件存儲的路徑即可。在FMDatabase.h文件中,提供了databaseWithPath:方法,用于快速創建一個數據庫。

                                                + (instancetype)databaseWithPath:(NSString*)inPath;
                                                

                                                在databaseWithPath:方法中,需要傳入數據庫所在路徑,這個路徑有三種情況:

                                                1. 提供一個系統路徑。如果這個路徑上沒有數據庫,則會創建一個新的數據庫。
                                                2. 一個空字符串@""。在沙盒中的temporary文件夾中創建一個數據庫,之后在數據庫被關閉之后會被刪除。
                                                3. NULL。在內存中創建一個數據庫,之后在數據庫被關閉之后會被刪除。
                                                    NSArray *dirPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                                                    NSString *dbDir = [dirPath objectAtIndex:0];
                                                    NSString *path = [dbDir stringByAppendingPathComponent:@"tmp.db"];
                                                    FMDatabase *db = [FMDatabase databaseWithPath:path];
                                                

                                                打開數據庫

                                                在使用SQLite數據庫之前,都需要打開數據庫。由于FMDB是對SQLite的封裝,因此在操作數據庫之前,也需要提前打開數據庫。在FMDB中,提供了open方法用于打開數據庫。

                                                if (![db open]) {
                                                    // 數據庫打開失敗的處理
                                                    db = nil;
                                                    return;
                                                }
                                                

                                                關閉數據庫

                                                對數據庫執行完查詢或更新操作后,我們需要調用close方法關閉SQLite數據連接,以便釋放系統資源。

                                                [db close];
                                                

                                                事務Transactions

                                                事務Transactions是數據庫操作的單個工作單位。如果某一事務成功,則在該事務中進行的所有數據更改均會提交,成為數據庫中永久的組成部分。若果事務遇到錯誤,則必須取消或回滾,所有數據均被更改清除。

                                                FMDatabase通過begin/end語句來開始和提交一個事務。

                                                • 開始執行事務
                                                - (BOOL)beginTransaction;
                                                
                                                • 提交事務
                                                - (BOOL)commit;
                                                
                                                • 事務回滾
                                                - (BOOL)rollback;
                                                

                                                欧美超级精品一级A片|欧美一级黄色视频|国产精品自在在线午夜免费|4444亚洲人成无码网在线观看|亚洲ⅴa曰本va欧美va视频