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

                                                SQLite入門:1-數據庫的操作

                                                對于簡單的數據,我們完全可以使用Plist來存取數據。隨著數據逐漸變大,查詢數據和修改數據就會變得越來越麻煩。另外,使用Plist來存取數據無法解決的一個問題是,每次查詢數據需要將整個文件都加載到內存中,如果文件很大這顯然是不合適的。此時,我們就需要使用到SQLite。

                                                SQLite是一個數據庫引擎,無需服務端支持即可直接運行在客戶端上。SQLite使用非常廣泛,在每一臺iOS設備,Android設備,Mac電腦,Windows10上面都能使用SQLite。就像其他數據庫一樣,SQLite 引擎不是一個獨立的進程,可以按應用程序需求進行靜態或動態連接,并且SQLite 直接訪問其存儲文件。

                                                數據類型

                                                存儲在SQLite數據庫中的數據具有以下幾種存儲類型。

                                                | 存儲類型 | 描述 |
                                                | --- | --- |
                                                | NULL | 值是一個 NULL 值。 |
                                                | INTEGER | 值是一個帶符號的整數,根據值的大小存儲在 1、2、3、4、6 或 8 字節中。 |
                                                | REAL | 值是一個浮點值,存儲為 8 字節的 IEEE 浮點數字。 |
                                                | TEXT | 值是一個文本字符串,使用數據庫編碼(UTF-8、UTF-16BE 或 UTF-16LE)存儲。 |
                                                | BLOB | 值是一個 blob 數據,完全根據它的輸入存儲。 |

                                                導入SQLite

                                                在開發過程中,如果我們希望使用SQLite,則需要預先導入SQLite的庫文件。

                                                首先創建一個Single View Application工程,在工程的TARGETS中選擇Build Phases選項,在Link Binary With Libraries中添加libsqlite3.dylib到工程中。在添加的過程中,我們會發現存在libsqlite3.dylib和libsqlite3.0.tbd。這兩者的區別是:libsqlite3.dylib總是鏈向最新的libsqlite庫,目前最新的是libsqlite3.0。也就是說如果以后有libsqlite3.1.tbd,則鏈向的是libsqlite3.1.tbd。

                                                添加依賴庫的圖片

                                                在程序需要使用SQLite的類中添加頭文件。

                                                #import <sqlite3.h>
                                                

                                                #創建數據庫

                                                數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生于距今五十年前,隨著信息技術和市場的發展,特別是二十世紀九十年代以后,數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。
                                                現在我們來創建一個SQLite數據庫。

                                                • 在控制器類中添加一個sqlite3類型的屬性
                                                @interface ViewController ()
                                                @property (nonatomic, assign) sqlite3 *db;
                                                @end
                                                
                                                • 在ViewController.m中,添加如下的方法,用戶創建一個SQLite數據庫
                                                - (BOOL)openDatabaseWithName:(NSString *)databaseName {
                                                    NSString *docsDir = nil;
                                                    NSArray *dirPath = nil;
                                                    
                                                    // 獲取文檔目錄路徑
                                                    dirPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
                                                    docsDir = [dirPath objectAtIndex:0];
                                                    
                                                    // 拼接數據庫路徑
                                                    NSString *databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: databaseName]];
                                                    
                                                    NSFileManager *fileManager = [NSFileManager defaultManager];
                                                    
                                                    const char *dbPath = [databasePath UTF8String];
                                                    if (![fileManager fileExistsAtPath: databasePath ]) {
                                                        if (sqlite3_open(dbPath, &_db) == SQLITE_OK) {
                                                            NSLog( @"數據庫 打開/創建 成功:%@", databasePath);
                                                            return YES;
                                                        }
                                                        else {
                                                            NSLog( @"數據庫 打開/創建 失?。?@", databasePath);
                                                            return NO;
                                                        }
                                                    }else{
                                                        NSLog(@"數據庫已創建: %@", databasePath);
                                                        if (sqlite3_open(dbPath, &_db) == SQLITE_OK) {
                                                            NSLog( @"數據庫 打開/創建 成功:%@", databasePath);
                                                            return YES;
                                                        }
                                                        else {
                                                            NSLog( @"數據庫 打開/創建 失?。?@", databasePath);
                                                            return NO;
                                                        }
                                                        return YES;
                                                    }
                                                }
                                                

                                                我們可以在viewDidLoad方法中執行這個方法,會有以下的輸出結果。

                                                - (void)viewDidLoad {
                                                    [super viewDidLoad];
                                                    [self openDatabaseWithName:@"99iOS.sqlite"];
                                                }
                                                

                                                我們打開應用程序的沙盒路徑,可以查看已經創建的數據庫文件。

                                                在上面的代碼中,函數sqlite3_open用來創建/打開一個數據庫。如果dbPath路徑上有數據庫則打開,沒有則新建一個數據庫,并把值賦給db指針。該函數有一個輸入參數filename和一個輸出函數ppDb。

                                                SQLITE_API int SQLITE_STDCALL sqlite3_open(
                                                  const char *filename,   /* Database filename (UTF-8) */
                                                  sqlite3 **ppDb          /* OUT: SQLite db handle */
                                                );
                                                

                                                在對數據庫操作完成之后記得要執行sqlite3_close函數關閉數據庫,來回收系統資源。

                                                - (void)closeDB {
                                                    if (NULL == _db) {
                                                        NSLog(@"數據庫不存在");
                                                    } else {
                                                        sqlite3_close(_db); // 關閉數據庫
                                                    }
                                                }
                                                

                                                示例代碼

                                                https://github.com/99ios/13.5.1


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