关于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);

 

你可能感兴趣的:(sqlite)