數(shù)據(jù)持久化的幾種方式:plist吟秩、NSUserDefaults、歸檔绽淘、sqlite
sqlite:關(guān)系型數(shù)據(jù)庫 以表格的形式存儲
在sqlite中類似表格的表頭的位置叫做《字段》(字段名不能重復(fù))字段是用來查找數(shù)據(jù)的關(guān)鍵字(每張表格的關(guān)鍵字不能重名)
可以通過這張表的任意一個字段查找到對應(yīng)的數(shù)據(jù)(橫著)
在字段的下面是每條數(shù)據(jù)(存儲的內(nèi)容)
sqlite中 可以有多個表 表與表之間是通過主鍵和外鍵關(guān)聯(lián)起來的
操作數(shù)據(jù)庫:
1涵防、sql語句(structured query language)結(jié)構(gòu)化查詢語言
sql語句:結(jié)構(gòu)化查詢語言組成的一條語句
2、操作數(shù)據(jù)庫的函數(shù)(通過C語言來操作的)
#pragma mark-----------
1沪铭、sql語句
常用關(guān)鍵字:select壮池、insert、update杀怠、delete椰憋、from、create赔退、where橙依、desc、order硕旗、by窗骑、group、table漆枚、drop创译、alter、view墙基、index等等
類型:
integer:?整型值
real:?浮點值
text:?文本字符串
blob:?二進(jìn)制數(shù)據(jù)
功能性:建表 刪表
建表:create(創(chuàng)建) table(表)
建表公式:create table?表名?(字段名 類型,?字段名 類型);
如果不存在這個表就去創(chuàng)建:create table if not exists?表名?(字段名 類型,?字段名 類型);
例子:create table?if?not exists user (name text, age integer)
讓ID自動增長 把某個字段設(shè)置成主鍵并讓它自動增長(primary key autoincrement)
例子:create table?if?not exists user (idinteger primary key autoincrement, name text, age integer)
刪表:drop(刪除) table
刪表公式:drop table?表名
如果表存在就去刪除:drop table if exists user
操作:增 刪 改 查
增:insert into values
公式:insert into?表名?(字段名) values(值)
刪:delete from?
公式:delete from?表名?where?字段?= '值';
改:update from where set
公式:update?表名?set?字段名?= '新值' where?字段名?= '值';
查:select?from where
公式:
1昔榴、查詢某條數(shù)據(jù):select?字段(整條數(shù)據(jù)所有包含的字段) from?表名?where?字段?like ?;
2、查詢整個表:select * from?表名
步驟:
1碘橘、核對sql語句的合法性
2、綁定要查詢的數(shù)據(jù)
3吱肌、開始查詢
#pragma mark-----------
ios操作數(shù)據(jù)的函數(shù)步驟
1痘拆、導(dǎo)入?sqlite3這個框架*****
2、打開氮墨、關(guān)閉數(shù)據(jù)庫
sqlite3_open(char?*類型的文件路徑,?數(shù)據(jù)庫對象的內(nèi)存地址)
sqlite3_close(數(shù)據(jù)庫對象)
3纺蛆、(如果沒有建表 需要建表)①增 刪 改 對應(yīng)的操作
對表格進(jìn)行操作:sqlite3_exec(數(shù)據(jù)庫對象, [@"建表(增 刪 改)的語句"?UTF8String]char?*類型的sql語句(要干什么),?NULL,?NULL,?char?*類型的字符串(如果有錯誤會返回一個錯誤信息))
②查 對應(yīng)的操作
1吐葵、核對sql語句的合法性
2、綁定要查詢的數(shù)據(jù)
3桥氏、開始查詢温峭、分離查詢結(jié)果
使用完數(shù)據(jù)庫 及時關(guān)閉數(shù)據(jù)庫
1、核對sql語句的合法性
sqlite3_stmt *stmt;結(jié)果集 查詢的數(shù)據(jù)放入里面
sqlite3_prepare_v2(數(shù)據(jù)庫的對象, sql語句,?查詢語句的長度(-1),?結(jié)果集的內(nèi)存地址,?NULL)
2字支、綁定要查詢的數(shù)據(jù)
sqlite3_bind_text(數(shù)據(jù)集的對象,?綁定的第幾個問號,?要查詢的內(nèi)容(char*),?要查詢內(nèi)容的長度,?NULL)
3凤藏、開始查詢、分離查詢結(jié)果
while?(sqlite3_step(stmt) ==?SQLITE_ROW) {
sqlite3_column_查詢的類型(結(jié)果集的對象,?列數(shù))
?? ? }