zoukankan      html  css  js  c++  java
  • iOS:三种数据库的小总结

    三种数据库总结:sqlite、FMDB、CoreData

     
    1、sqlite数据库(C语言)需要方法和属性:
     (1)数据类型:
    –INTEGER 有符号的整数类型
    –REAL 浮点类型
    –TEXT 字符串类型,采用UTF-8和UTF-16字符编码
    –BLOB 二进制大对象类型,能够存放任何二进制数据

    (2)属性:

       sqlite *_db;           //自己定义一个sqlite的成员变量.进行增删改查时要用
         SQLITE_OK             //获取结果集,查询前准备,检测SQL语句是否正确
                 SQLITE_ROW               // 从结果集中一条条的取数据时,判断是否还有下一条     
                 SQLITE_DONE              //  往结果集中一条条的绑定数据时,判断数据是否全部绑定结束
      (3)方法:
    sqlite3_open(fileName.UTF8String, &_db);//打开或者创建一个数据
     
             sqlite3_exec(_db, sql, NULL, NULL,&error);//不返回结果集的语句,该函数进行insert,delete,update操作.
     
              查询操作select ,带结果集的查询语句,会返回出结果,从表中查询到的数据都会放到stmt结构体中
        sqlite3_prepare_v2(_db, sql, -1, &stmt, NULL);     //做查询前准备,检测SQL语句是否正确
     
        sqlite3_bind_text(statement, 1, [nsdate UTF8String], -1, NULL)   //绑定参数
     
        sqlite3_step(stmt)    //提取查询到的数据,一次提取一条,通过循环可以取出所有数据
         
        sqlite3_column_text(stmt, 0)   //取出第0列的数据.
     
        sqlite3_finalize(stmt);              //清理结果集
     
      sqlite3_close(&_db);         //关闭数据库
     
        单例模式:(这里主要用来保证初始化的数据库是唯一的,只要创建了一次,那么它就不会被再创建)

         + (NoteDAO*)sharedManager 

          { 

                 static dispatch_once_t once; 

           dispatch_once(&once, ^{ 

            sharedManager = [[self alloc] init]; 

          [sharedManager   createEditableCopyOfDatabaseIfNeeded]; }

                  );

             return sharedManager;

          }

     

    2、FMDB第三方数据库,对sqlite进行了封装


    (1)需要的对象:

             FMDatabase:对象就代表一个单独的SQLite数据库用来执行SQL语句

             FMResultSet:使用FMDatabase执行查询后的结果集
     
             FMDatabaseQueue:用于在多线程中执行多个查询或更新,它是线程安全的

    (2)需要的方法:

    执行SQL语句:

    <1>使用:(需要FMDatabase *db成员变量)
         创建或打开:FMDataBase类

    self.db = [FMDatabase databaseWithPath:fileName]; 

    [self.db open];

    [self.db executeUpdate:@“CREATE TABLE IF NOT EXISTS t_student (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name TEXT,age INTEGER)”];

    [self.db executeUpdate:@"INSERT INTO t_student(name , age) VALUES(‘admin’,‘10')];

     

    <2>查询:FMResultSet类

     1.查询

            FMResultSet *set = [self.db  executeQuery:@"SELECT * FROM t_student;"];  

     2.取出数据         即 {type}ForColumnIndex:

           while ([set next])

           {      

             取出姓名

              NSString *name = [set stringForColumnIndex:1];

             取出年龄

             int age = [set intForColumnIndex:2];

             NSString *name = [set stringForColumn:@"name"];

             int age = [set intForColumn:@"age"];

             NSLog(@"name = %@, age = %d", name, age);

           }

    <3>关闭数据库 

           [self.db close];

    3、CoreData数据库框架:
     
    (1)需要的对象

    (1)NSManagedObjectContext(被管理的数据上下文)

    操作实际内容(操作持久层)

    作用:插入数据,查询数据,删除数据

    (2)NSManagedObjectModel(被管理的数据模型)

    数据库所有表格或数据结构,包含各实体的定义信息

    作用:添加实体的属性,建立属性之间的关系

    操作方法:视图编辑器,或代码

    (3)NSPersistentStoreCoordinator(持久化存储助理)

    相当于数据库的连接器

    作用:设置数据存储的名字,位置,存储方式,和存储时机

    (4)NSManagedObject(被管理的数据记录)

    相当于数据库中的表格记录

    (5)NSFetchRequest(获取数据的请求)

    相当于查询语句

    (6)NSEntityDescription(实体结构)

    相当于表格结构

    (2)需要的方法:

            //获取实体对象
           NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:@“ClassName” 
           inManagedObjectContext:self.managedObjectContext];
               //创建请求对象   
        NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@“ClassName”];                            
     
    //创建排序对象
    NSSortDescriptor *ageSort = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES]
    [request setSortDescriptors:@[ageSort]];
     
    //取出所有的数据
    NSArray *fetcheObjects = [self.managedObjectContext executeFetchRequest:request error:&error];
  • 相关阅读:
    python爬虫之破解javascript-obfuscator的混淆加密
    python反爬之前端加密技术
    轻松截获 Selenium 中的 Ajax 数据
    macos安装selenium+浏览器驱动
    爬虫神器,对ajax加载的数据进行hook截取,无视带有加密参数的接口
    macos 配置apache,mysql,php,nginx环境
    对WX公众号文章的爬取分析
    对app的反爬测试之apk逆向分析-frida绕过ssl pinning检测
    macos 安装frida的坑
    简易OA漫谈之工作流设计(四,怎么支持会签)
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4833936.html
Copyright © 2011-2022 走看看