蓝懿IOS学习SQL数据库

当前类中导入头文件

    

    // 1、打开数据库

    // 创建数据库文件所在路径字符串

    NSString *path = @"/Users/Boris/Public/蓝懿第三期/Day31 - SQLite/test.db";

    

    // 创建数据库指针, 先赋值为空, 稍后他会被赋值.

    // 以防万一出现野指针, C语言的空是 NULL, ObjC的空是 nil

    sqlite3 *db = NULL;

    

    // 打开数据库, 并且把已经打开的数据库赋值给 db 这个指针.

    // 第一个参数是数据库文件位置, 第二个参数是一个指针, 一个指向指针类型变量的指针

    // 之所以用这种 指针的指针 的方式来创建对象, 是因为该函数返回值有其它作用, 不能用来返回数据库变量. 但又有需求要这个函数"返回"多个值(执行状态、数据库变量实例), 所以只能通过传统返回值方式返回一个结果(执行状态), 再通过参数间接的"返回"另外一个结果(数据库变量实例).

    int res_open = sqlite3_open(path.UTF8String, &db);

    if (res_open == SQLITE_OK) {

        // NSLog(@"成功打开数据库");

        // 1、创建表

        [self executeSQLite:db withSQL:@"create table if not exists t_newtable (id integer primary key autoincrement ,name text, age integer, math real)"];

        

        // 2、插入数据

        [self executeSQLite:db withSQL:@"insert into t_newtable (name, age, math) values ('Tom', 10, 100)"];

        

        // 3、查询数据

        [self quaryData:db];

    } else {

        NSLog(@"打开数据库失败, 失败代码: %d", res_open);

    }

    

}

 

- (void)executeSQLite:(sqlite3 *)db withSQL:(NSString *)sql {

    // 新创建一个C语言的字符串变量指针, 准备稍后接收错误信息用.

    char *errMsg = NULL;

    

    /**

     * 通过调用 sqlite3_exec() 函数来执行特定的 SQL 语句

     * 第一个参数是: 给哪个数据库执行? 传一个数据库变量进去

     * 第二个参数是: 执行什么? 传进去一个 SQL 语句的C语言字符串

     * 第三个、第四个是回调, 用不上直接赋值"空" NULL (注意C语言与ObjC语言的"空"不一样, NULL、nil)

     * 第五个参数是: 如果产生错误信息, 把错误信息保存到哪里去? 传入一个字符串指针.

     * 返回值: 是一个整数, 表示当前函数执行结果, 例如执行成功或执行失败.

     */

    int res_exec = sqlite3_exec(db, sql.UTF8String, NULL, NULL, &errMsg);

    

    // 通过判断 sqlite3_exec() 的返回值来确认当前 SQL 语句是否执行成功

    res_exec == SQLITE_OK ? /* NSLog(@"SQL 语句执行成功!") */ : NSLog(@"SQL 执行失败, 原因: %s", errMsg);

}

posted @ 2016-01-28 23:59  我姓李,住隔壁  阅读(161)  评论(0编辑  收藏  举报