相比于服务器端的数据存储,IOS中几种数据存储的技术:
(1)XML属性列表 —— PList
(2)NSKeyedArchiver 归档
(3)Preference(偏好设置)
(4)SQLite3
(5)Core Data(以面向对象的方式操作数据库SQLite)
发现用数据库进行数据的存储和缓存,才是王道,
比较有心得的体会:虽然通过文件的方式进行存储,读写速度相对数据库存储较快,但是涉及大批量的数据时,在查询/管理/优化方面,数据库的优势明显会更大些.而且作为移动端,SQLite数据库在数据缓存方面的运用则尤为重要.
工作之余,运用SQLite3的许多小知识点,写了一个小小的数据库增删改查操作,专门与sqlite3交互的个人信息管理类,直接上代码,望大牛指正:
底层架构图
核心代码实现:
(1) Services服务层封装
PesonManager.h
#import <Foundation/Foundation.h>
#import "Person.h"@interface PersonManager : NSObject
+ (instancetype)sharedPersonManager;
// 1. 新增用户
- (void)addPerson:(Person *)person;// 2. 更新用户(关于主键,永远都不要去修改)
- (void)updatePerson:(Person *)person;// 3. 删除用户,使用主键来删除指定用户
- (void)removePerson:(NSInteger)personID;// 4. 列表用户,查询所有用户
- (NSArray *)allPersons;@end
PesonManager.m
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
|
接下来在控制器里面封装模型取出相应数据即可,关于SQLite3中运用的知识点,总结如下:
1. sqlite3_open 打开数据库
* 如果数据库已经存在,直接打开
* 如果数据库不存在,新建一个空白的数据库(0KB),然后再打开2. 创建数据表
* 定义数据操作SQL
* 调用sqlite3_exec执行SQL
提示:为了避免重复建表,可以在建表SQL中增加 IF NOT EXISTS3. 单步执行操作
增/删/改/查数据4. 查询语句
1> 准备SQL
2> 检查SQL语句是否正确 sqlite3_prepare_v2
3> 单步执行,依次获取查询到的记录 SQLITE_ROW == sqlite3_step...
4> 按照查询顺序,依次取出每一个字段的内容
sqlite3_column_text 取字符串
sqlite3_column_int 取整数
sqlite3_column_double 取浮点数5.操作SQLite数据库需要5个方法
sqlite3_open
sqlite3_execsqlite3_prepare_v2
sqlite3_stepsqlite3_column_text 取字符串
sqlite3_column_int 取整数
sqlite3_column_double 取浮点数
两个枚举
SQLITE_OK
SQLITE_ROW
当然,一般在实际开发中都会直接封装成一套数据库操作类,但是对于SQL结构化查询,无论是服务器开发,还是客户端开发,都是万变不离其中.
IOS中数据存储 sqlite3 的应用, 知识点: 数据库句柄 , 单例模式运用,
Services服务层,sqlite3_open, sqlite3_exec,
sqlite3_prepare_v2,sqlite3_step等等