关闭

IOS之【sqlite3数据库】

标签: iosios开发数据库
759人阅读 评论(0) 收藏 举报
分类:


@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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:631066次
    • 积分:9404
    • 等级:
    • 排名:第1998名
    • 原创:272篇
    • 转载:235篇
    • 译文:14篇
    • 评论:31条
    博客专栏
    最新评论