FMDB的基本使用

写在前面

在编程的世界里,总少不了和数据库打交道,毕竟这大千世界的数据太多,总有一个好的方法去管理,数据库技术就诞生了。这里主要介绍iOS中FMDB第三方库如何操作数据库的。FMDB github链接。

详细内容

  • 对于FMDB需要了解的东西
    • 支持CocoaPods管理
    • 支持ARC和非ARC环境,FMDB会根据环境自动适应
    • 支持文件全路径、@”“、NULL创建数据库
  • 代码示例

    • 开始之前,你要导入FMDB第三方库以及数据库的支持库-libsqlite3.0.tbd(之前版本的xcode是libsqlite3.0.dylib)
    • 创建数据库

      -(void)createDatabase
      {
      NSLog(@"%s", __func__);
      // 数据库文件路径
      // 若你使用@“”为全路径,则会在临时文件夹内创建数据库,在数据库链接关闭时,数据库会被删除
      // 若你使用 NULL为全路径,则会在内存中创建数据库,在数据库链接关闭时,数据库会被删除
      NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/data.db"];
      
      //创建数据库
      FMDatabase *db = [FMDatabase databaseWithPath:path];
      
      // 编写创建表的sql语句,关于SQL这里就不介绍了。
      NSString *sqlStr = @"CREATE TABLE users(username text, pwd text)";
      
      // 打开数据库,并执行创建表操作
      if ([db open])
      {
          // 创建表,除去查询语句使用executeQuery以外,其他相关语句都使用executeUpdate语句
          BOOL result = [db executeUpdate:sqlStr];
          if (result)
          {
              NSLog(@"创建成功!");
          }
      }
      
      // 关闭数据库
      [db close];
      }
    • 插入数据

      - (void)insert
      {
          NSLog(@"%s", __func__);
          // 数据库路径
          NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/data.db"];
          // 根据已有的文件创建数据库
          FMDatabase *db = [FMDatabase databaseWithPath:path];
      
          // 插入sql
          NSString *sqlStatements = @"INSERT INTO users values('zhangsan', '123');"
                              "INSERT INTO users values('ali', '123xxx');"
                              "INSERT INTO users values('beidou', '123456xxx');"
                              "INSERT INTO users values('tianwang', '123456');"
                              "INSERT INTO users values('武松', '123456');"
                              "INSERT INTO users values('武大郎', '123456');";
          if ([db open])
          {
              // 执行普通的sql语句
              BOOL result = [db executeUpdate:@"INSERT INTO users values('goyaya', '123456');"];
              // 执行批处理操作,FMDB会自动开启事务操作
              result = [db executeStatements:sqlStatements withResultBlock:^int(NSDictionary *resultsDictionary) {
                  NSLog(@"%@", resultsDictionary);
                  return 0;
              }];
              if (result) {
                  NSLog(@"插入成功!");
              }
          }
      
          [db close];
      }
    • 删除数据

      - (void)delete
      {
          NSLog(@"%s", __func__);
          // 数据库路径
          NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/data.db"];
      
          //创建数据库
          FMDatabase *db = [FMDatabase databaseWithPath:path];
      
          // 删除sql语句,删除名字中含有x的用户
          NSString *sqlStr = @"DELETE FROM users where username like '%?%'";
      
          if ([db open])
          {
              BOOL result = [db executeUpdate:sqlStr withArgumentsInArray:@[ @"x" ]];
              if (result)
              {
                  NSLog(@"删除成功!");
              }
          }
          [db close];
      
      }
    • 更新数据

      - (void)update
      {
          NSLog(@"%s", __func__);
          // 数据库路径
          NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/data.db"];
      
          //根据已有的文件创建数据库
          FMDatabase *db = [FMDatabase databaseWithPath:path];
      
          NSString *sqlStr = @"UPDATE users SET username = ? WHERE username = ?";
      
          if ([db open])
          {
              BOOL result = [db executeUpdate:sqlStr withArgumentsInArray:@[ @"zhang", @"zhangsan" ]];
              if (result)
              {
                  NSLog(@"更新成功!");
              }
          }
          [db close];
      }
    • 查询数据

      - (void)query
      {
          NSLog(@"%s", __func__);
          // 数据库路径
          NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/data.db"];
      
          //创建数据库
          FMDatabase *db = [FMDatabase databaseWithPath:path];
      
          NSString *sqlStr = @"SELECT * FROM users where username=? or username = ?";
          if ([db open])
          {
              // 执行条件查询
              FMResultSet * set = [db executeQuery:sqlStr withArgumentsInArray:@[ @"zhang", @"zhangsan" ]];
              while ([set next])
              {
                  NSLog(@"%@", [set stringForColumn:@"username"]);
              }
              [set close];
          }
          [db close];
      }

总结

这里主要介绍了FMDB的增删改查功能的基本使用,属于入门教程,想具体了解的还是去github上看看官方示例吧。

若大家发现错误,欢迎指正。共同交流,共同进步!谢谢阅读!

你可能感兴趣的:(iOS)