極客班IOS開發(fā)高級進(jìn)階第三周筆記

這周的內(nèi)容又多又難,作業(yè)也不大會(huì)做QAQ就整理一下sqlite3的筆記好了。這周的實(shí)操作業(yè)就等著學(xué)習(xí)其它同學(xué)們的作業(yè)了( ̄^ ̄)ゞ


SQL的全稱是Structured Query Language,即結(jié)構(gòu)化查詢語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng),是一種操縱關(guān)系數(shù)據(jù)庫的語言。

關(guān)系數(shù)據(jù)庫是由若干張表格,每個(gè)表格中有若干個(gè)字段這種形式組成的。在這個(gè)表格上可以進(jìn)行各種關(guān)系運(yùn)算等。

下圖是一個(gè)使用第三方軟件做出的sqlite表格供參考:

sqlite表格

SQL的語言有以下四種:

DDL(Data Definition Language)數(shù)據(jù)庫定義語言

DML(Data Manipulation Language)數(shù)據(jù)操縱語言

DCL(Data Control Language)數(shù)據(jù)庫控制語言

TCL(Transaction Control Language)事務(wù)控制語言

在IOS開發(fā)中常用的是前面兩種,用于創(chuàng)建數(shù)據(jù)庫,還有增刪改查的操作。


使用SQLite數(shù)據(jù)庫,首先要了解如何創(chuàng)建庫表結(jié)構(gòu)。

文法圖

根據(jù)文法圖,我們可以組合出一個(gè)簡單的語句:

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

如果希望安全一點(diǎn),還可以寫成

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

這樣可以避免重復(fù)建表覆蓋已經(jīng)存在的表格。

以上只是根據(jù)文法圖得到的一些簡單語句,還有更多的用法全部可以參考文法圖得出。

最后,在建立表格的過程中,需要定義存儲類型,不過起始可以隨便寫,引擎會(huì)自動(dòng)做判斷,詳情可以參考文法圖左下角的藍(lán)色字體部分。


接下來看看保存數(shù)據(jù)的語句使用的文法圖:

“增”操作文法圖

根據(jù)文法圖可以舉個(gè)??:

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

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


查詢數(shù)據(jù)操作的文法圖:

“查”操作文法圖

舉個(gè)??:

select * from ios_students where id > 100;

select * from ios_students where name = 'jane';

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


刪改操作的文法圖:

“刪改”操作文法圖

舉個(gè)??:

update ios_students set score=90 where id=101;

delete from ios_students where id=102;


在IOS中使用SQLite:

使用前一定要鏈接libSQLite3.dylib
SQLite3 API 要點(diǎn)

查詢操作建議使用文法圖左下角的方法,先prepare一個(gè)stmt,我們會(huì)在stmt里面用“?”來代表參數(shù),而不是直接把參數(shù)值拼到SQL里面,這樣是為了防止SQL注入攻擊,在拼字符串的時(shí)候,如果字符串的信息來自外部輸入,外部可以拼一個(gè)特殊的字符串,提早結(jié)束SQL語句,然后注入一些其他的命令,這些命令可能用來查詢系統(tǒng)漏洞,對系統(tǒng)進(jìn)行攻擊等。

既然我們之前在stmt中用“?”來代表參數(shù)了,那么我們之后就要綁正確的參數(shù)進(jìn)去作為補(bǔ)償,所以之后需要使用sqlite3_bind_text(stmt,1,"john",-1,NULL)函數(shù),其中NULL是用來完成回調(diào)的,回調(diào)執(zhí)行的時(shí)候釋放內(nèi)存是最安全的。


這周就這樣吧,加油( ̄^ ̄)ゞ

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是SQLite?數(shù)據(jù)庫存儲數(shù)據(jù)的步驟 ●SQLite是一款輕型的嵌入式數(shù)據(jù)庫,它占用資源非常的低,在嵌入式設(shè)備...
    飛行的貓閱讀 2,602評論 1 7
  • iOS H5 PHP 數(shù)據(jù)庫管理系統(tǒng) SQL: SQL 是Structured Query Language(結(jié)構(gòu)...
    云之君兮鵬閱讀 1,599評論 1 3
  • 有一天,我突然明白,錯(cuò)過也不是什么壞事情。 當(dāng)然了,也有可能是我在自己安慰自己。 這里有幾個(gè)關(guān)于錯(cuò)過的故事,希望你...
    茫了又茫閱讀 569評論 10 5
  • 從入監(jiān)隊(duì)被分到監(jiān)區(qū)后,我被分到機(jī)臺上做服裝,我們用的都是電動(dòng)縫紉機(jī),因此每個(gè)監(jiān)區(qū)都配有一名機(jī)修工。專修機(jī)臺的。龍兒...
    妮妮蕊閱讀 298評論 0 0
  • 大自然塑造了我之后,就把所用的模子打碎了。我是獨(dú)一無二的,我能感受到自己的內(nèi)心,我敢說這世界上還找不出一個(gè)和我相似...
    東者西迷閱讀 440評論 0 2

友情鏈接更多精彩內(nèi)容