美文网首页
极客班IOS开发高级进阶第三周笔记

极客班IOS开发高级进阶第三周笔记

作者: AalizzwellAaron | 来源:发表于2016-09-26 22:32 被阅读0次

这周的内容又多又难,作业也不大会做QAQ就整理一下sqlite3的笔记好了。这周的实操作业就等着学习其它同学们的作业了( ̄^ ̄)ゞ


SQL的全称是Structured Query Language,即结构化查询语言,用于存取数据以及查询、更新和管理关系数据库系统,是一种操纵关系数据库的语言。

关系数据库是由若干张表格,每个表格中有若干个字段这种形式组成的。在这个表格上可以进行各种关系运算等。

下图是一个使用第三方软件做出的sqlite表格供参考:

sqlite表格

SQL的语言有以下四种:

DDL(Data Definition Language)数据库定义语言

DML(Data Manipulation Language)数据操纵语言

DCL(Data Control Language)数据库控制语言

TCL(Transaction Control Language)事务控制语言

在IOS开发中常用的是前面两种,用于创建数据库,还有增删改查的操作。


使用SQLite数据库,首先要了解如何创建库表结构。

文法图

根据文法图,我们可以组合出一个简单的语句:

create table ios_students ( id integer not null primary key, name varcher not null, get integer, score real)

如果希望安全一点,还可以写成

create table if not exists ios_students ( id integer not null primary key, name varcher not null, get integer, score real)

这样可以避免重复建表覆盖已经存在的表格。

以上只是根据文法图得到的一些简单语句,还有更多的用法全部可以参考文法图得出。

最后,在建立表格的过程中,需要定义存储类型,不过起始可以随便写,引擎会自动做判断,详情可以参考文法图左下角的蓝色字体部分。


接下来看看保存数据的语句使用的文法图:

“增”操作文法图

根据文法图可以举个🌰:

insert into ios_students values (101, 'phil', 25, 85);

insert into ios_sutdents (id, name) values (102, 'jane');


查询数据操作的文法图:

“查”操作文法图

举个🌰:

select * from ios_students where id > 100;

select * from ios_students where name = 'jane';

select * from ios_students where name like 'J%';       //范围查找


删改操作的文法图:

“删改”操作文法图

举个🌰:

update ios_students set score=90 where id=101;

delete from ios_students where id=102;


在IOS中使用SQLite:

使用前一定要链接libSQLite3.dylib SQLite3 API 要点

查询操作建议使用文法图左下角的方法,先prepare一个stmt,我们会在stmt里面用“?”来代表参数,而不是直接把参数值拼到SQL里面,这样是为了防止SQL注入攻击,在拼字符串的时候,如果字符串的信息来自外部输入,外部可以拼一个特殊的字符串,提早结束SQL语句,然后注入一些其他的命令,这些命令可能用来查询系统漏洞,对系统进行攻击等。

既然我们之前在stmt中用“?”来代表参数了,那么我们之后就要绑正确的参数进去作为补偿,所以之后需要使用sqlite3_bind_text(stmt,1,"john",-1,NULL)函数,其中NULL是用来完成回调的,回调执行的时候释放内存是最安全的。


这周就这样吧,加油( ̄^ ̄)ゞ

相关文章

网友评论

      本文标题:极客班IOS开发高级进阶第三周笔记

      本文链接:https://www.haomeiwen.com/subject/yfnqyttx.html