免费开源的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