SQLite3数据库

 

#pragma mark 打开数据库
- (void)openDB {
    // 数据库文件路径
    NSString *filename = [@"sqlite.db" documentsAppend];
    
    // 如果数据库不存在,就会创建一个
    int result = sqlite3_open([filename UTF8String], &_db);
    if (result == SQLITE_OK) {
        NSLog(@"打开数据库成功!");
    }
}

#pragma mark 创建表
- (void)createTables {
    char *sql = "create table if not exists t_person(id integer primary key autoincrement, name text, age integer);";
    
    char *error;
    // sqlite3_exec能执行一切SQL语句
    // insert into t_person(name, age) values('person', 10);
    int result = sqlite3_exec(_db, sql, NULL, NULL, &error);
    
    if (result != SQLITE_OK) {
        NSLog(@"创表错误:%s", error);
    }
}

#pragma mark 插入数据
- (void)insertData {
    char *sql = "insert into t_person(name, age) values(?, ?);";
    
    sqlite3_stmt *stmt;

    // sqlite3_prepare_v2做一些插入数据的准备
    // 主要是检查SQL语句的语法问题
    int result = sqlite3_prepare_v2(_db, sql, -1, &stmt, NULL);
    
    // 说明语句没有语法问题
    if (result == SQLITE_OK) {
        // 第2个int类型的参数用来指定第几列,从1开始
        // 绑定name字段的值
        sqlite3_bind_text(stmt, 1, "person", -1, NULL);
        
        // 绑定age字段的值
        sqlite3_bind_int(stmt, 2, 10);
        
        // 执行sql语句
        if (sqlite3_step(stmt) != SQLITE_DONE) {
            NSLog(@"插入数据失败!");
        } else {
            NSLog(@"插入数据成功!");
        }
    } else {
        NSLog(@"插入数据的SQL语句语法有问题");
    }
}

#pragma mark 查询数据
- (void)findData {
    char *sql = "select id,name,age from t_person;";
    
    sqlite3_stmt *stmt;
    
    // sqlite3_prepare_v2做一些插入数据的准备
    // 主要是检查SQL语句的语法问题
    int result = sqlite3_prepare_v2(_db, sql, -1, &stmt, NULL);
    // 说明语句没有语法问题
    if (result == SQLITE_OK) {
        
        // 如果返回值是ROW,代表读取到一行数据
        while (sqlite3_step(stmt) == SQLITE_ROW) {
            // 列号从0开始
            int ID = sqlite3_column_int(stmt, 0);
            
            char *name = (char *)sqlite3_column_text(stmt, 1);
            
            int age = sqlite3_column_int(stmt, 2);
            
            NSLog(@"id=%i,name=%s,age=%i", ID, name, age);
        }
        
    } else {
        NSLog(@"查询数据的SQL语句语法有问题");
    }
}

 
 
原文地址:https://www.cnblogs.com/wangshengl9263/p/3051644.html