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

                                                SQLite入門:2-表的操作

                                                創建表

                                                表就像我們經常使用的EXCEL中的表一樣,由行和列組成。每一行表示一條數據。每一列表示每條數據的一個屬性,這個屬性有NULL, INTEGER, REAL, TEXT, BLOB這幾種類型。而表是存放在數據庫中的,比如我們創建的CONTACTS表需要存放在名為99iOS.sqlite數據庫中的。

                                                下方的示例代碼中編寫一個createTable方法來創建一張聯系人表。有如下幾個要點:

                                                1. 在執行createTable方法之前,先確保數據庫已經處于打開狀態。
                                                2. 編寫創建表的SQL語句:"CREATE TABLE IF NOT EXISTS CONTACTS (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, address TEXT, phone TEXT)"。注意這里的字符串是使用""號包裝的,其前面沒有@, 因此這是C語言字符串。這條SQL語句是用來創建一張CONTACTS表,如果表不存在則創建。在SQL語句中規定了表的結構,表由id, name, address, phone字段組成,同時也規定了每個字段的數據類型。PRIMARY KEY AUTOINCREMENT這個表示id字段是表的主鍵并且是自增的,我們添加記錄時不需要為這個字段專門賦值,該字段會自動地增加一。
                                                3. 調用sqlite3_exec函數執行SQL語句,如果出錯會把錯誤信息賦給errMsg。
                                                4. 操作完數據庫之后我們要關閉數據庫,這樣能回收系統資源。
                                                - (BOOL)createTable {
                                                    if (NULL == _db) {
                                                        NSLog(@"數據庫不存在,創建'聯系人'表失敗");
                                                        return NO;
                                                    }
                                                    
                                                    char *errMsg = NULL;
                                                    // 拼接SQL語句
                                                    const char *sql = "CREATE TABLE IF NOT EXISTS CONTACTS (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, address TEXT, phone TEXT)";
                                                    
                                                    if (sqlite3_exec(_db, sql, NULL, NULL, &errMsg) != SQLITE_OK) {
                                                        NSLog( @"創建'聯系人'表失敗");
                                                        return NO;
                                                    }
                                                    NSLog( @"創建'聯系人'表成功");
                                                    return YES;
                                                }
                                                

                                                運行結果如下。

                                                查看表結構

                                                創建好數據庫以及表之后,我們可以通過命令行工具來查看表結構。

                                                • 首先打開終端,通過cd命令跳轉到應用程序沙盒的Documents路徑,即SQLite數據庫路徑。

                                                • 輸入sqlite3 99iOS.sqlite打開數據庫

                                                • 輸入.schema命令可以查看表結構。如果已經創建了數據庫和聯系人表,則會有以下的輸出。

                                                刪除表

                                                當我們希望刪除數據庫中的一張表時,需要使用DROP語句。DROP語句的基本語法是:

                                                'DROP TABLE database_name.table_name;'
                                                

                                                下方的代碼中編寫一個dropTable方法來刪除一張表。

                                                - (BOOL)dropTable {
                                                    if (NULL == _db) { //1
                                                        NSLog(@"數據庫不存在,刪除'聯系人'表失敗");
                                                        return NO;
                                                    }
                                                    char *errMsg = NULL;
                                                    // 拼接SQL語句
                                                    const char *sql = "DROP TABLE CONTACTS;"; //2
                                                    
                                                    if (sqlite3_exec(_db, sql, NULL, NULL, &errMsg) != SQLITE_OK) { //3
                                                        NSLog( @"刪除'聯系人'表失敗");
                                                        return NO;
                                                    }
                                                    NSLog( @"刪除'聯系人'表成功");
                                                    return YES;
                                                }
                                                

                                                示例代碼

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


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