create table user(id integer? primary key autoincrement,name text,pass text)
insert into user(name,pass) values('mmmm','mmmmmm') ;
insert into user(name,pass) values('123','322')
update user set name="zad" ,pass="dfsdf" ,qb=qb+2 ?where id=2;
select * from表名 order ?by ?age desc
updata 表名 set 字段=值,字段=值 where [條件]
1.為項(xiàng)目增加lbsqlite3.dylib
target->BuildPhases->+->
libsqlite3.dylib代表最新版本的SQLite3
2.在需要使用SQLiteAPI的OC類中導(dǎo)入
#import
stmt-Statement
對(duì)API操作的函數(shù):
int sqlite3_exec(sqlite3*,const char* sql,int(*callback)(void*,int,char**,char**),viud*,char**errmsg):
用于執(zhí)行沒(méi)有返回值的sql語(yǔ)句赏表,第一個(gè)參數(shù)代表打開(kāi)數(shù)據(jù)庫(kù)連接,第二個(gè)參數(shù)代表SQL語(yǔ)句,第三個(gè)參數(shù)代表執(zhí)行完成的回調(diào)函數(shù)寄悯,第四個(gè)參數(shù)代表傳給回調(diào)函數(shù)的調(diào)用參數(shù)帐偎,第五個(gè)參數(shù)用于封裝執(zhí)行SQL語(yǔ)句出錯(cuò)后的錯(cuò)誤信息
sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*):返回sqlite3代表的數(shù)據(jù)庫(kù)最后一次插入的ID
int sqlite3_changes(sqlite3*):當(dāng)執(zhí)行某條DML語(yǔ)句之后蔗牡,該函數(shù)用于返回受該條DML語(yǔ)句影響的記錄條數(shù)
void sqlite3_interrupt(sqlite3*): 中斷一個(gè)長(zhǎng)時(shí)間執(zhí)行的查詢語(yǔ)句
int sqlite3_complete(const char*sql): SQL語(yǔ)句是否執(zhí)行完成 適用于UTF-8
int sqlite3_complete16(const char*sql):適用于使用UTF-16字符集
int sqlite3_errcode(sqlite3 *db):獲取該數(shù)據(jù)庫(kù)連接執(zhí)行sql語(yǔ)句的錯(cuò)誤代碼
int sqlite3_extended_errcode(sqlite3* db):獲取該數(shù)據(jù)庫(kù)連接執(zhí)行SQL語(yǔ)句額外的錯(cuò)誤代碼
const char*sqlite3_errmsg(sqlite3*):獲取該數(shù)據(jù)庫(kù)連接執(zhí)行SQL語(yǔ)句的錯(cuò)誤提示痘煤。該函數(shù)還有const void* sqlite3_errmsg16(sqlite3*)拨与,用于處理UTF-16
int sqlite3_prepare(sqlite3*db,const char*zSql, int nByte,sqlite3_stmt**ppStmt,const char**pzTail): 對(duì)SQL語(yǔ)句執(zhí)行欲編譯哩治,該函數(shù)的第一個(gè)參數(shù)代表打開(kāi)的數(shù)據(jù)庫(kù)連接秃踩,第二個(gè)參數(shù)代表SQL語(yǔ)句,第三個(gè)三叔代表SQL語(yǔ)句的最大長(zhǎng)度业筏,第四個(gè)參數(shù)是傳出參數(shù)憔杨,只想欲編譯SQL語(yǔ)句產(chǎn)生的sqlite3_stmt,第五個(gè)參數(shù)指向SQL語(yǔ)句中未使用的部分。
const char*sqlite3_sql(sqlite3_stmt*pStmt):用于提取sqlite3_stmt(預(yù)編譯SQL語(yǔ)句產(chǎn)生的結(jié)果)中包裝的SQL語(yǔ)句
int sqlite3_stmt_busy(sqlite3_stmt*)用于檢測(cè)sqlite3_stmt(預(yù)編譯SQL語(yǔ)句產(chǎn)生的結(jié)果)是否為只讀操作
int sqlite3_bind_busy(sqlite3_stmt*):用于檢測(cè)sqlite3_stmt(預(yù)欲編譯SQL語(yǔ)句產(chǎn)生的結(jié)果)是否否正在執(zhí)行過(guò)程中
int sqlite3_bind_xxx(): 用于為sqlite3_stmt(預(yù)編譯SQL語(yǔ)句產(chǎn)生的結(jié)果)中的占位符參數(shù)綁定參數(shù)值蒜胖,其中第一個(gè)參數(shù)的索引為1消别,后面的參數(shù)索引逐個(gè)加1,根據(jù)綁定的參數(shù)類型的不同台谢,該函數(shù)的函數(shù)名有變化寻狂,傳入的參數(shù)個(gè)數(shù)也有變化,但至少需要兩個(gè)參數(shù)朋沮,第一個(gè)代表的索引蛇券,第二個(gè)代表參數(shù)的值。
int sqlite3_column_count(sqlite3_stmt*pStmt):返回sqlite3_stmt(欲編譯SQL語(yǔ)句產(chǎn)生的結(jié)果)返回的查詢結(jié)果的列數(shù)量樊拓。
const char*sqlite3_column_name(sqlite3_stmt*,int N);返回sqlite3_stmt(預(yù)編譯SQL語(yǔ)句產(chǎn)生的結(jié)果)的查詢結(jié)果中指定列索引對(duì)應(yīng)的列名
const char*sqlite3_column_database_name(sqlite3_stmt*,int):返回sqlite3_stmt(預(yù)編譯SQL語(yǔ)句產(chǎn)生的結(jié)果)的查詢結(jié)果中指定列索引對(duì)應(yīng)的數(shù)據(jù)庫(kù)名怀读。
const char*sqlite3_column_table_name(sqlite3_stmt*,int) 返回sqlite3_stmt((預(yù)編譯SQL語(yǔ)句產(chǎn)生的結(jié)果)的查詢結(jié)果中指定列索引對(duì)應(yīng)的表名
const char*sqlite3_column_decltype(sqlite3_stmt*,int):f安徽sqlite3_stmt( c預(yù)編譯SQL語(yǔ)句產(chǎn)生的結(jié)果) 的茶 u 虛擬機(jī)誒過(guò)中國(guó)年制定列索引對(duì)應(yīng)的類型
int sqlite3_step(sqlite3_stmt*):用于執(zhí)行sqlite3_stmt(預(yù)編譯SQL語(yǔ)句產(chǎn)生的結(jié)果),SQLITE_DONE表明執(zhí)行成功,除非調(diào)用sqlite3_reset()函數(shù)重置sqlite3_stmt,否則不應(yīng)該再次調(diào)用sqlite3_stmt
int sqlite3_data_count(sqlite3_stmt*pStmt): 用于執(zhí)行sqlite3_stmt(預(yù)編譯SQL語(yǔ)句產(chǎn)生的結(jié)果)當(dāng)前提取的數(shù)據(jù)行所包含的列數(shù)量骑脱。該函數(shù)與sqlite3_column_count()的區(qū)別——sqlite3_column_count()返回的是整個(gè)結(jié)果集的列數(shù)量菜枷,而sqlite3_data_count()函數(shù)返回的是當(dāng)前提取的數(shù)據(jù)行的列數(shù)量,比如當(dāng) sqlite3_step()h桉樹(shù)返回 SQLITE_DONE時(shí)叁丧,sqlite3_data_count()函數(shù)返回的一定是0
sqlite3_column_xxx(sqlite3_stmt*,int iCol):返回當(dāng)前行啤誊,指定列的數(shù)據(jù)
int sqlite3_finalize(sqlite3_stmt*pStmt):銷(xiāo)毀sqlite3_stmt,并回收資源
int sqlite3_reset(sqlite3_stmt*pStmt):重設(shè)sqlite3_stmt, 從而允許再次對(duì)該sqlite3_stmt執(zhí)行sqlite3_step()函數(shù)
char* sqlite3_temp_directory:獲取數(shù)據(jù)庫(kù)的臨時(shí)文件的目錄
char*sqlite3_data_directory:獲取數(shù)據(jù)庫(kù)的數(shù)據(jù)文件的目錄
int sqlite3_get_autocommit(sqlite3*) 返回制定數(shù)據(jù)庫(kù)是否為自動(dòng)提交模式拥娄,如果為自動(dòng)提交模式蚊锹,返回0,否則返回非0的整數(shù)
const char*sqlite3_db_filename(sqlite3*db,const char*zDbName);返回制定數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)文件路徑稚瘾,該函數(shù)返回的總是數(shù)據(jù)文件的絕對(duì)路徑
int sqlite3_db_readonly(sqlite3*db,const char*zDnName):用于檢測(cè)指定數(shù)據(jù)庫(kù)是否為只讀數(shù)據(jù)庫(kù)
sqlite3_stmt*sqlite3_next_stmt(sqlite3*pDb,sqlite3_stmt*pStmt):用于獲取下一個(gè)sqlite3_stmt
3.5.2 創(chuàng)建數(shù)據(jù)庫(kù)和表
s你用sqlite3_open()函數(shù)即可打開(kāi)貨創(chuàng)建數(shù)據(jù)庫(kù)
sqlite3* database;
sqlite3_open([self dbPath] UIF8String],&database);
SQLite支持都是面向C語(yǔ)言而不是面向OC的
創(chuàng)建數(shù)據(jù)庫(kù)表格:
//定義執(zhí)行建表的SQL語(yǔ)句
const char* createSQL="create table if not exists word_inf\(_id integer prmary key autoincrement,\
word,\
detail)";
//執(zhí)行建表語(yǔ)句
int result=sqlite3_exec(database,createSQL,NULL,NULL,&errMsg);;