美文网首页
极客班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