IOS之【sqlite3数据库】

来源:互联网 发布:linux 添加yum源 编辑:程序博客网 时间:2024/05/19 01:13


@interface jamesWongViewController () {

    //数据库实例,代表着整个数据库

   sqlite3 *_db;

}

@end


@implementation jamesWongViewController


- (void)viewDidLoad

{

    [superviewDidLoad];

    

    [selfopenDB];

    

    [selfcreateTables];

    

   for (int i =0; i<10; i++) {

        //[self insertData];

    }

    

    

    [self findData];

    

    // 关闭数据库

    sqlite3_close(_db);

}


#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语句语法有问题");

    }

}


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

        //2int类型的参数用来指定第几列,从1开始

        // 绑定name字段的值

       sqlite3_bind_text(stmt,1, "jamesWong", -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)openDB {

    // 数据库文件路径

   NSString *filename = [@"sqlite.db"documentsAppend];

    

    //如果数据库不存在,就会创建一个

   int result =sqlite3_open([filenameUTF8String], &_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('jamesWong', 10);

   int result =sqlite3_exec(_db, sql,NULL,NULL, &error);

    

   if (result !=SQLITE_OK) {

       NSLog(@"创表错误:%s", error);

    }

}

@end


原创粉丝点击