iOS学习笔记(二十四)————数据库操作

/ 0评 / 0

iOS中用到的数据库是 SQLite,首先我们需要导入 libsqlite3.tbd (新版的包名都是这),导入头文件 #import
然后根据系统提供的函数去进行数据库的操作

    NSString *sqlPath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"sqlite"];
    //数据库路径使用UTF8编码
    const char *cfile = sqlPath.UTF8String;
    sqlite3 *db;
    
    //打开数据库的结果
    int result  = sqlite3_open(cfile, &db);
    
    if (result == SQLITE_OK) {
        NSLog(@"成功打开数据库!");
        
        //创建数据表的SQL
        const char *sql = "CREATE TABLE IF NOT EXISTS test(id integer PRIMARY KEY AUTOINCREMENT,name text NOT NULL,age integer NOT NULL);";
        
        //错误信息
        char *errormsg = NULL;
        
        result = sqlite3_exec(db, sql, NULL, NULL, &errormsg);
        
        
        if (result == SQLITE_OK) {
            NSLog(@"创建表成功!");
        }else{
            NSLog(@"创建表失败 ----%s",errormsg);
        }
        
    }else{
        NSLog(@"打开数据库失败!");
    }
    
    
    //    增
    for (int i = 0; i < 20; i++) {
        NSString *name = [NSString stringWithFormat:@"我是大神-%d",i];
        int age = arc4random_uniform(20)+10;
        
        //数据库插入语句
        NSString *insertSql = [NSString stringWithFormat:@"INSERT INTO test (name,age) VALUES ('%@',%d);",name,age];
        
        //错误信息
        char *errmsg = NULL;
        result = sqlite3_exec(db, insertSql.UTF8String, nil, nil, &errmsg);
        
        if (result == SQLITE_OK) {
            NSLog(@"插入成功!");
        }else{
            NSLog(@"插入失败!");
        }
    }
    
    
    //    查
    const char *selectSql="SELECT id,name,age FROM test WHERE age<20;";
    sqlite3_stmt *stmt=NULL;
    //进行查询前的准备工作
    if (sqlite3_prepare_v2(db, selectSql, -1, &stmt, NULL)==SQLITE_OK) {//SQL语句没有问题
        NSLog(@"查询语句没有问题");
        
        //每调用一次sqlite3_step函数,stmt就会指向下一条记录
        while (sqlite3_step(stmt)==SQLITE_ROW) {//找到一条记录
            //取出数据
            //(1)取出第0列字段的值(int类型的值)
            int ID=sqlite3_column_int(stmt, 0);
            //(2)取出第1列字段的值(text类型的值)
            const unsigned char *name=sqlite3_column_text(stmt, 1);
            //(3)取出第2列字段的值(int类型的值)
            int age=sqlite3_column_int(stmt, 2);
            //            NSLog(@"%d %s %d",ID,name,age);
            printf("%d %s %d\n",ID,name,age);
        }
    }else{
        NSLog(@"查询语句有问题");
    }

这就是iOS中数据库的基本操作~

sqlite3

代码请查看 http://git.oschina.net/zcb1603999/LearningiOS

评论已关闭。