zoukankan      html  css  js  c++  java
  • 关于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);
  • 相关阅读:
    关于position定位
    获取滚动条距离的兼容问题
    margin取百分值
    float 与 display:inline-block
    Object.getOwnPropertyNames()
    正则表达式的方法:replace,match,test(replace参数可以是回调函数)
    offset / scroll / client Left / Top
    client / page / offset / screen X / Y
    原生js贪吃蛇
    Functional PHP 5.3 Part I
  • 原文地址:https://www.cnblogs.com/yuanjianguo2012/p/3740872.html
Copyright © 2011-2022 走看看