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];
posted @ 2015-09-23 23:41  XYQ全哥  阅读(326)  评论(0编辑  收藏  举报