ios开发

iOS sqlite3 使用

2019-05-17  本文已影响0人  LKbobo

#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 {

    // 查询失败

}

上一篇下一篇

猜你喜欢

热点阅读