zoukankan      html  css  js  c++  java
  • 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语句语法有问题");
        }
    }

     
     
  • 相关阅读:
    C++中重载、重定义、重写概念辨析
    虚函数,抽象函数
    取出一个int的每一位,用算法
    Typedef和define
    枚举
    基于 ThinkPHP 3.2.3 的页面静态化功能的实现
    骑行在华盛顿 针对320万次共享单车骑行数据的分析
    骑行在华盛顿 针对320万次共享单车骑行数据的分析
    分析了10个垂直行业后,告诉你大数据应用面临哪些挑战
    分析了10个垂直行业后,告诉你大数据应用面临哪些挑战
  • 原文地址:https://www.cnblogs.com/wangshengl9263/p/3051644.html
Copyright © 2011-2022 走看看