这周的内容又多又难,作业也不大会做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是用来完成回调的,回调执行的时候释放内存是最安全的。
这周就这样吧,加油( ̄^ ̄)ゞ
网友评论