iOS開發資料庫篇 SQLite常用的函式

2022-08-30 04:15:11 字數 3353 閱讀 7575

一、簡單說明

1.開啟資料庫

int sqlite3_open(

const char *filename,   // 資料庫的檔案路徑

sqlite3 **ppdb          // 資料庫例項

);2.執行任何sql語句

int sqlite3_exec(

sqlite3*,                                  // 乙個開啟的資料庫例項

const char *sql,                           // 需要執行的sql語句

int (*callback)(void*,int,char**,char**),  // sql語句執行完畢後的**

void *,                                    // **函式的第1個引數

char **errmsg                              // 錯誤資訊

);3.檢查sql語句的合法性(查詢前的準備)

int sqlite3_prepare_v2(

sqlite3 *db,            // 資料庫例項

const char *zsql,       // 需要檢查的sql語句

int nbyte,              // sql語句的最大位元組長度

sqlite3_stmt **ppstmt,  // sqlite3_stmt例項,用來獲得資料庫資料

const char **pztail

);4.查詢一行資料

int sqlite3_step(sqlite3_stmt*); // 如果查詢到一行資料,就會返回sqlite_row

5.利用stmt獲得某一字段的值(欄位的下標從0開始)

double sqlite3_column_double(sqlite3_stmt*, int icol);  // 浮點資料

int sqlite3_column_int(sqlite3_stmt*, int icol); // 整型資料

sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int icol); // 長整型資料

const void *sqlite3_column_blob(sqlite3_stmt*, int icol); // 二進位制文字資料

const unsigned char *sqlite3_column_text(sqlite3_stmt*, int icol);  // 字串資料

二、sqlite編碼

1.建立、開啟、關閉資料庫

建立或開啟資料庫

// path是資料庫檔案的存放路徑

sqlite3*db = null;

int result =sqlite3_open([path utf8string], &db); 

**解析:

sqlite3_open()將根據檔案路徑開啟資料庫,如果不存在,則會建立乙個新的資料庫。如果result等於常量sqlite_ok,則表示成功開啟資料庫

sqlite3 *db:乙個開啟的資料庫例項

資料庫檔案的路徑必須以c字串(而非nsstring)傳入

關閉資料庫:sqlite3_close(db);

2.執行不返回資料的sql語句

執行創表語句

char *errormsg = null;  // 用來儲存錯誤資訊

char *sql = "create table if not exists t_person(id integer primary key autoincrement, name text, age integer);";

int result =sqlite3_exec(db, sql, null, null, &errormsg);

**解析:

sqlite3_exec()可以執行任何sql語句,比如創表、更新、插入和刪除操作。但是一般不用它執行查詢語句,因為它不會返回查詢到的資料

sqlite3_exec()還可以執行的語句:

(1)開啟事務:begin transaction;

(2)回滾事務:rollback;

(3)提交事務:commit;

3.帶佔位符插入資料

char *sql = "insert into t_person(name, age) values(?, ?);";

sqlite3_stmt*stmt;

if (sqlite3_prepare_v2(db, sql, -1, &stmt, null) ==sqlite_ok)

if (sqlite3_step(stmt) !=sqlite_done)

sqlite3_finalize(stmt);

**解析:

sqlite3_prepare_v2()返回值等於sqlite_ok,說明sql語句已經準備成功,沒有語法問題

sqlite3_bind_text():大部分繫結函式都只有3個引數

(1)第1個引數是sqlite3_stmt *型別

(2)第2個引數指佔位符的位置,第乙個佔位符的位置是1,不是0

(3)第3個引數指佔位符要繫結的值

(4)第4個引數指在第3個引數中所傳遞資料的長度,對於c字串,可以傳遞-1代替字串的長度

(5)第5個引數是乙個可選的函式**,一般用於在語句執行後完成記憶體清理工作

sqlite_step():執行sql語句,返回sqlite_done代表成功執行完畢

sqlite_finalize():銷毀sqlite3_stmt *物件

4.查詢資料

char *sql = "select id,name,age from t_person;";

sqlite3_stmt*stmt;

if (sqlite3_prepare_v2(db, sql, -1, &stmt, null) ==sqlite_ok)

}sqlite3_finalize(stmt);

**解析:

sqlite3_step()返回sqlite_row代表遍歷到一條新記錄

sqlite3_column_*()用於獲取每個字段對應的值,第2個引數是字段的索引,從0開始

IOS開發資料庫篇 sqlite常用語句

簡單約束 create table if not exists t student id integer primary key autoincrement,name text,age integer create table if not exists t student id integer p...

iOS開發 UI高階 SQLite資料庫

sqlite資料庫介紹 1 資料持久化 資料持久化是通過檔案將資料儲存在磁碟上 ios下主要有四種資料持久化方式 1 屬性列表 2 物件歸檔 3 sqlite資料庫 4 coredata 2 資料庫的相關概念 a 資料庫 database 是按照資料結構來組織 儲存和管理資料的倉庫 資料庫管理系統是...

iOS開發資料庫篇 FMDB資料庫佇列

一 示例 1.需要先導入fmdb框架和標頭檔案,由於該框架依賴於libsqlite庫,所以還應該匯入該庫。05 fmdb資料庫佇列4 5 6 7 89 import yyviewcontroller.h 10 import fmdb.h 11 12 inte ce yyviewcontroller ...