数据持久化


数据持久化是通过文件将数据存储在磁盘上
iOS有四种数据持久化方式

1.属性列表(property List)。简单易用,适合小数据量的存储和查询操作,但是不适合大量数据的存储.
属性列表代码
//1属性列表(Property List)
    
NSArray *plist = @[@"name",@"age"];
    
//指定保存的地方
    
NSString *file = [NSHomeDirectory() stringByAppendingString:@"/Documents/database.plist"];
    
//将创建的数组保存到指定的路径下
    [plist 
writeToFile:file atomically:YES];

2 对象归档(把数据进行序列化存储),好处:1对数据进行加密,2文件保存的方式是序列化的。但是它也不适合大量数据的存储.
 对象归档代码
//2对象归档
    
NSDictionary *dic = @{@"name":@"张三",
                          
@"age":@18,
                          
@"userId":@123456};
    
//创建归档对象
    
//指定要保存的地方
    
NSString *toPath = [NSHomeDirectory() stringByAppendingString:@"/Library/data.archiver"];
    
NSLog(@"toPath:%@",toPath);
    
BOOL success = [NSKeyedArchiver archiveRootObject:dic toFile:toPath];
    
if (success) {
        
NSLog(@"归档成功");
    }
    
//解归档
   
BOOL succ = [NSKeyedUnarchiver unarchiveObjectWithData:[NSData dataWithContentsOfFile:toPath]];
    
if (succ) {
        
NSLog(@"解归档成功");
    }



3 SQLite数据库(是按照数据结构来组织,存储和管理数据的仓库),SQLite数据库一种轻型的关系数据库管理系统,它占用资源特别低,很适合移动设备中使用,而且是开源免费的,使用时要添加SQLite3.0框架,基于c语言,顺序,第三方框架EGO(OC接口,),适合大数据量的存储和查询操作.
4Core Data,它不是数据库,他可以使用数据库、XML的方式来存储数据.它以面向对象的形式存储数据,可以不需要写SQL语句,适合大数据量的存储和查询,使用时需要导入CoreData框架
5.NSUserDefault和应用程序绑定的,放在应用程序内置的bundle的plist文件中.
偏好设置代码:
 //3.NSUserDefaults:偏好设置
    
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    
//设值
    [defaults 
setBool:YES forKey:@"NII"];
    [defaults 
setObject:@"Lily" forKey:@"haha"];
    
    
//同步数据
    [defaults 
synchronize];


SQLite通过SQL语句操作数据,CoreData使用面向对象的方式操作数据 

SQlite数据库,sqlite最新版本是3.0,使用前需要导入libsqlite3.0dylib,SQLite3.0使用的是C的函数接口

二:操作数据局库的流程

   (1)打开数据库

(2)编译SQL语句

(3)执行SQL语句

(4)销毁SQL语句

(5)关闭数据库

三:常用的SQL语句

/** DDL 数据定义语言 **/

(1)创建表格

      CREATETABLE t_student (idINTEGER, nameTEXT, ageINTEGER);


     CREATETABLE t_movie (id integer PRIMARY KEY,name text,director text);

      CREATETABLE t_movie (idintegerPRIMARYKEYAUTOINCREMENT,nametext,directortext);

      CREATETABLEIFNOTEXISTS t_movie (idintegerPRIMARYKEYAUTOINCREMENT,nametext, directortext)

 (2)删除表格

      DROPTABLE t_student;


/** DML 数据操作语言 **/ 

(1)插入一条数据,字符串在SQL用单引号

      INSERT INTO t_student VALUES (1, '张三', 18);

      INSERT INTO t_student (name, age) VALUES ('丁三', 90)

 (2)修改、更新数据,如果你没有指定条件(限定条件),全部会修改

     UPDATE t_student SET age = 20;

     UPDATE t_student SET age = 13 WHERE id = 2;

  (3)删除表的记录(内容)

    DELETE FROM t_student;

 (4)条件的限定 OR AND

    UPDATE t_student SET age = 13 WHERE id = 2 OR id = 3;

    UPDATE t_student SET age = 99 WHERE id >= 2;


/** DQL 数据查询语言 **/ 

      SELECT * FROM t_student; // 查询所有数据

       SELECT id identifier, name s_nameFROM t_student; // 查询2字段数据,取别名

      SELECT * FROM t_student WHERE age > 20;

      SELECT * FROM t_student ORDER BY age DESC; // 默认ASC,升序

      SELECT COUNT(*)FROM t_student;  // 查询表中存在多少条记录

      SELECT sum(age) FROM t_student;  // 查询表age所有记录之和

      SELECT max(age) FROM t_student  WHERE id  = 2 OR id  = 3;

      SELECT * FROM t_student LIMIT 0, 5;  // n * (n - 1), 6









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值