美文网首页ios开发
iOS sqlite3 使用

iOS sqlite3 使用

作者: LKbobo | 来源:发表于2019-05-17 22:42 被阅读0次

    #import <sqlite3.h>

    static sqlite3 *db = nil;

    打开数据库

    // 数据库文件路径

    NSString *pathString = [NSString stringWithFormat:"%@/Documents/Table.db", NSHomeDirectory()];

    const char *path = [pathString UTF8String];

    // 如果数据库文件不存在,这个函数会自动创建数据库文件,这个函数只能接收 const char * 类型的路径参数

    int result = sqlite3_open(path, &_db);

    if (result == SQLITE_OK) {

        // 数据库打开成功

    } else {

        // 数据库打开失败,失败之后要掉用关闭数据库方法

        int ret = sqlite3_close(_db);

        if (ret == SQLITE_OK) {

            // 关闭成功

            _db = nil;

        } else {

            // 关闭失败

        }

    }

    创建表格

    // 格式,sqlite 中的类型包括:integer 整型值 real 浮点值 text 文本字符串 blob 二进制数据(比如文件)

    // 1. create table 表名 (字段名1 字段类型1, 字段名2 字段类型2, ...);

    // 2. create table if not exists 表名 (字段名1 字段类型1, 字段名2 字段类型2, ...);

    NSString *sql = @"CREATE TABLE IF NOT EXISTS user (name TEXT, age INTEGER)";

    int result = sqlite3_exec(_db, [sql UTF8String], NULL, NULL, NULL);

    if (result == SQLITE_OK) {

        // 表创建成功

    } else {

        // 表创建失败

    }

    删除表格

    // 格式

    // 1. drop table 表名;

    // 2. drop table if exists 表名;

    NSString *sql = @"DROP TABLE  IF EXISTS user";

    int result = sqlite3_exec(_db, [sql UTF8String], NULL, NULL, NULL);

    if (result == SQLITE_OK) {

        // 表删除成功

    } else {

        // 表删除失败

    }

    插入数据

    // 格式

    // insert into 表名 (字段1, 字段2, ...) values (字段1的值, 字段2的值, ...);

    NSString *sql = @"INSERT INTO user (name, age) values ('LK', 18)";

    int result = sqlite3_exec(_db, [sql UTF8String], NULL, NULL, NULL);

    if (result == SQLITE_OK) {

        // 插入成功

    } else {

        // 插入失败

    }

    删除数据

    // 格式

    // delete from 表名; (这个是删除表中所有数据)

    // delete from 表名 where 条件; (这个是选择性删除,比如:字段 = 某个值/字段 is 某个值/字段 != 某个值/字段 is not 某个值/字段 > 某个值/字段 < 某个值,也可以一条数据的多个字段作为条件,可以使用 and 和 or ,相当于 && 和 ||)

    NSString *sql = @"DELETE FROM user WHERE age > 18";

    int result = sqlite3_exec(_db, [sql UTF8String], NULL, NULL, NULL);

    if (result == SQLITE_OK) {

        // 删除成功

    } else {

        // 删除失败

    }

    修改数据

    // 格式

    // update 表名 set 字段1 = 字段1的新值, 字段2 = 字段2的新值, ...;(这个是修改表中所有数据)

    // update 表名 set 字段1 = 字段1的新值, 字段2 = 字段2的新值, ... where 条件;(选择性修改)

    NSString *sql = @"UPDATE user SET name = 'wang' WHERE age = 18";

    int result = sqlite3_exec(_db, [sql UTF8String], NULL, NULL, NULL);

    if (result == SQLITE_OK) {

        // 修改成功

    } else {

        // 修改失败

    }

    查询数据

    // 查询数据不能使用 sqlite3_exec 方法去执行 sq 语句

    // 格式

    // 1. select * from 表名; (查询表中所有数据)

    // 2. select 字段1, 字段2, ... from 表名; (查询表中字段1和2的数据)

    // 3. select 字段1, 字段2, ... from 表名 where 条件;(选择性查询)

    NSStrng *sql = @"SELECT name FROM user WHERE age = 18";

    // 参数1:数据库 参数2:sql 语句 参数3:sql 语句长度(-1自动计算)参数4:结果集(用来收集查询结果)参数5:NULL

    sqlite3_stmt *stmt;

    int result  = sqlite3_prepare_v2(_db, [sql UTF8String], -1, &stmt, NULL);

    if (result == SQLITE_OK) {

        // 查询成功

        // 遍历结果集拿到查询到的数据

        // sqlite3_step 获取结果集中的数据

        while (sqlite3_step(stmt) == SQLITE_ROW) {

            // 参数1:结果集 参数2:列数

            const char *name = sqlite3_column_text(stmt, 0);

            integer age = sqlite3_column_integer(stmt, 1);

        }

    } else {

        // 查询失败

    }

    相关文章

      网友评论

        本文标题:iOS sqlite3 使用

        本文链接:https://www.haomeiwen.com/subject/onbaaqtx.html