关于IOS数据操作方式详解(三)— Sqlite数据解析

  SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。

  那么对于数据库的操作是什么样的呢?

//    打开数据库
    NSString *fileDBName = [[NSBundle mainBundle] pathForResource:@"qingyun_student" ofType:@"sqlite"];
    NSLog(@"fileDbName is %@",fileDBName); 
//    表示数据库的句杈
    sqlite3 *qingYunDb;
//    根据数据库文件路径,来打开数据库
    int result = sqlite3_open([fileDBName UTF8String], &qingYunDb);  
//    判断数据库有没有成功打开, 如果打开失败如何操作
    if (result != SQLITE_OK) {
        NSLog(@"Open db %@ failure.",fileDBName);
        return;
    }
//    定义一条insert SQL语句
    NSString *insertSQL = @"INSERT INTO COMPANY VALUES (15, 'NianHao', 25, 'Texas', 5000.00 )";    
//    执行SQL语句  
//    定义一个错误变量,用于保存当执行失败的时候, 识别错误信息
    char *error = nil;
    result = sqlite3_exec(qingYunDb, [insertSQL UTF8String], nil, nil, &error);
    if (result != SQLITE_OK) {
        NSLog(@"insert data failure:%@,%s",insertSQL,error);
        return;
    }

   由此,通过普通的SQL语句就可以将相应的数据写到数据库中。以以上方式就可以对数据库进行操作了。那么对数据的增删及修改都可以通过上述方式进行,那么怎么进行查询使用呢?

    NSString *selectSQL = @"SELECT * FROM COMPANY";
//    它表示数据查询语句编译后的结果对象
    sqlite3_stmt *stmt = nil;
    //将select SQL语句编译一下, 将编译的结果存放在stmt指针中。
    resultFlag =  sqlite3_prepare_v2(qingyunDB, [selectSQL UTF8String], -1, &stmt, NULL);
    if (resultFlag != SQLITE_OK) {
        NSLog(@"prepare sql failure.");
        return;
    }
//    返回结果可以理解为数据库的游标,指向的是当前数据表里的一条数据
    resultFlag = sqlite3_step(stmt);
//    当resultFlag == SQLITE_ROW表示数据库的表里面还有数据
    while (resultFlag  == SQLITE_ROW) {
        NSString *name =[ NSString stringWithFormat:@"%s",sqlite3_column_text(stmt, 1)];
        QYEmploye *emp = [[QYEmploye alloc] init];
        emp.name =name;
        emp.age = sqlite3_column_int(stmt, 2);
        emp.address = [NSString stringWithFormat:@"%s",sqlite3_column_text(stmt, 3)];
        [self.employee addObject:emp];
        resultFlag = sqlite3_step(stmt);
    }
    sqlite3_finalize(stmt);
//    关闭数据库
    sqlite3_close(qingyunDB);

 

posted @ 2014-05-21 11:23  醉云天  阅读(168)  评论(0编辑  收藏  举报