美文网首页iOS 成长之路
iOS总结1 - 数据库sqlite的使用

iOS总结1 - 数据库sqlite的使用

作者: ngugg | 来源:发表于2017-08-16 00:04 被阅读0次

    一、集成测试环境

    1.在github中搜索FMDB https://github.com/ccgus/fmdb
    2.创建测试工程
    3.创建podfile 文件,安装FMDB pod 'FMDB'
    4.导入 #import <FMDB.h> 头文件

    二、测试用例

    1.生成数据库

    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject stringByAppendingPathComponent:@"fm.db"];
    FMDatabase *db = [FMDatabase databaseWithPath:path];
    

    2.创建表文件语句

    empty.png

    3.在里面输入

    create table if not exists T_Person(
        id integer not null primary key autoincrement,
        age integer,
        name text
    );
    create table if not exists T_Student(
        id integer not null primary key autoincrement,
        age integer,
        name text,
        score integer
    );
    

    4.加载sql 语句

    NSString *sqlPath = [[NSBundle mainBundle] pathForResource:@"db.sql" ofType:nil];
    NSString *sql = [NSString stringWithContentsOfFile:sqlPath encoding:NSUTF8StringEncoding error:nil];
    

    5.执行sql语句

       [db open];
        //执行多条sql 语句
        BOOL result = [db executeStatements:sql];
        if (result) {
            NSLog(@"创表成功");
        } else {
            NSLog(@"创表失败");
        }
        [db close];
    

    6.打开火狐浏览器,打开 工具,选择 附加组件,点击左侧的扩展,然后右侧的搜索栏里面,输入sqlite,点击 安装,重启火狐浏览器,点击工具,打开

    Snip20170815_2.png
    然后点击 Snip20170815_3.png

    选择刚才创建好报表的数据库


    Snip20170815_4.png

    三、 插入,查询,修改,删除

    1.插入

        NSString *insertSql = @"INSERT INTO T_Person(age,name) values(?,?)";
        BOOL insertResult =  [db executeUpdate:insertSql withArgumentsInArray:@[@(18),@"周文刚"]];
        if (insertResult) {
            NSLog(@"插入成功");
        } else {
            NSLog(@"插入失败");
        }
    
    2.查询
      //1.简单查询
        NSString *selectSql = @"select id,name,age from T_Person";
        FMResultSet *selectResult = [db executeQuery:selectSql];
        while (selectResult.next) {
            NSInteger key = [selectResult intForColumn:@"id"];
            NSString *name = [selectResult stringForColumn:@"name"];
            NSInteger age = [selectResult intForColumn:@"age"];
            NSLog(@"key = %ld,name = %@,age = %ld",(long)key,name,(long)age);
        }
    

    执行的结果

    Snip20170815_5.png
      //2.复杂的查询
      NSMutableArray *selectArray = [NSMutableArray array];
      FMResultSet *selectResult1 = [db executeQuery:selectSql];
      while (selectResult1.next) {
          NSMutableDictionary *dic = [NSMutableDictionary dictionary];
          NSInteger count = selectResult1.columnCount;
          for (int i = 0; i < count; i++) {
              NSString *colName = [selectResult1 columnNameForIndex:i];
              id colValue = [selectResult1 objectForColumn:colName];
              
              dic[colName] = colValue;
          }
        
          [selectArray addObject:dic];
      
      }
      NSLog(@"%@",selectArray);
    

    运行结果截图


    Snip20170815_6.png
    3.更新
        NSString *updateSql = @"update T_Person set name = ?, age = ? where id = ?";
        BOOL resultupdate = [db executeUpdate:updateSql withArgumentsInArray:@[@"小明",@17,@1]];
        if (resultupdate) {
            NSLog(@"更新成功");
        } else {
            NSLog(@"更新失败");
        }
    
    Snip20170815_7.png

    4.删除

        NSString *deleteSql = @"delete from T_Person where id = 2";
        BOOL resultDelete = [db executeUpdate:deleteSql];
        if (resultDelete) {
            NSLog(@"删除成功");
        } else {
            NSLog(@"删除失败");
        }
    

    运行结果


    Snip20170815_8.png

    相关文章

      网友评论

        本文标题:iOS总结1 - 数据库sqlite的使用

        本文链接:https://www.haomeiwen.com/subject/zkxbrxtx.html