SQLite的一点学习心得

本文分享了SQLite数据库的学习心得,包括主键设计原则、创建与删除表、数据绑定、表连接查询、优化方法、数据持久化方式以及多线程查询和安全问题处理。还提到了防止SQL注入的方法和CoreData的多线程安全原理。
1.主键的设计原则:
(1)主键应当对用户是没有意义的
(2)永远不要更新主键
(3)主键不应包含动态变化的数据
(4)主键应当由计算机自动生成

2.
创建表
CREATE TABLE if not exists userList
(username
text NOT NULL UNIQUE ,
password
text NOT NULL ,
age
text DEFAULT 18,
id
integer NOT NULL PRIMARY KEY UNIQUE ,
sex boolean)
删除表
drop table userList

3.绑定数据要放在准备执行语句前才能使用 否则会出错
sqlite3_prepare_v2 ( _sqlite , [statement UTF8String ], - 1 , &stmt, NULL );

4.SQL表连接查询 (inner join(内连接)、full join、left join、right join)

5.SQLite 优化方法 建表优化 查询性能优化等

6.数据持久化方法 四种方式
小批量数据:
1.plist文件 属性列表(数组或者字典中只有装NSString NSData NSNumber NSDictionary NSArray才能写文件)
2.创建的各种对象 对象归档( 使用NSKeyedArichiver进行归档、NSKeyedUnarchiver进行接档)
http://www.cnblogs.com/ios8/p/ios-archive.html

大批量数据:
1.SQLite数据库 每个属性名(字段) 每条数据(记录)
2.CoreData 不是数据库 会以数据库和xml的方式存储

7.SQLite 中如果是很多条数据 可以多线程进行分页查询 提高效率
第1页: limit 0,6
第2页: limit 6,6
...
第n页 limit 6*(n-1),6

8.当主键为两个字段时 系统就不会默认自己加1了

9.查询两个表的时候 可以使用自己的表点出属性 也可以重命名后点出属性
select t_movie.id,t_movie.name,t_movie.dir_id from t_movie  join t_director b on t_movie.dir_id = b.id where t_movie.name = 'you';

10.用代码直接操作数据库时应当注意 原本的字符串是有’单引号’的

11.防止数据库注入(将输入的值输成sql语句修改我的数据库)的安全问题处理办法 进行预编译 将sql语句提前编译成二进制

12.sqlite的model 的生成方法 可以直接找到这个文件

13.CoreData多线程安全的原理
通过 setParentContext 方法,可以设置另外一个 NSManagedObjectContext 为自己的父级,这个时候子级可以访问父级下所有的对象,而且子级 NSManagedObjectContext 的内容变化后,如果执行save方法,会自动的 merge 到父级 NSManagedObjectContext 中,也就是子级save后,变动会同步到父级 NSManagedObjectContext。当然这个时候父级也必须再save一次,如果父级没有父级了,那么就会直接向NSPersistentStoreCoordinator中写入,如果有就会接着向再上一层的父级查找



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值