sqlite3 api學習筆記

2021-06-08 08:46:08 字數 1664 閱讀 7400

sqlite3中有5種資料型別:int real text null blob

但sqlite3中的列的資料型別不是固定的,列的資料型別隨著實際插入的資料的格式而定;

在sqlite3中使用sql時,有乙個非常有趣而有強大的概念:相似型別。引入相似型別的概念,主要是為了相容各種資料庫(sqlserver oracle mysql等)的sql語法。

sqlite3中常用的幾個函式:

int sqlite3_open(const char * filepath,sqlite3 **ppdb)

開啟乙個資料庫連線,filepath就是資料庫檔案,如果資料庫檔案不存在,該函式會建立這個資料庫檔案。

ppdb是輸出引數,當成功建立資料庫連線時,(*ppdb)會指向乙個sqlite3物件;當建立資料庫連線失敗是,(*ppdb)為null。

當成功建立資料庫連線時,此函式返回sqlite_ok,否則返回錯誤代號。

開啟資料鏈結後,我們一般需要執行一些sql語句,在執行sql之前,需要編譯這些sql語句:

sqlite3_prepare_v2(sqlite3 *pdb, const char * psql, int nbytes, sqlite3_stmt **ppsamt, const char **ptail)

呼叫此函式時,我們一般將 nbytes設為-1,這表示我們希望編譯由psql指定的sql語句: psql開始到\0結尾的字串,該字串會被視為用utf-8編碼

而將**ptail設為null

ppstamt為輸出引數,當成功編譯sql語句時,(*ppstmt)會指向乙個sqlite3_stmt物件;當編譯sql語句失敗時,(*ppstmt)會被設為null。

pdb就是所代開的資料庫鏈結。

當成功編譯sql語句時,此函式返回sqlite_ok,否則返回錯誤代號

例子: sqlite3_preapare_v2(pdb, "create table testtable(string text)", -1, ppstmt, null)

有個函式非常利於除錯用,它是const char *sqlite3_errmsg(sqlite3 *pdb),此函式返回上次操作sqlite3資料時,識別的錯誤的資訊。

注意:此函式的返回的 字串,不需我們自己呼叫sqlite3_free()釋放。

如:if(sqlite3_prepare_v2(..) != sqlite_ok)

編譯好sql語句後,我們就需要執行這些語句:

int sqlite3_step(sqlite3 *pdb, sqlite3_stmt *pstmt)

sql語句是insert、delete、drop或delete時,只需呼叫此函式一次,然後檢查它是否返回sqlite_done即可;

如果sql語句是select,因為select可能返回多行資料,此時,此時,每呼叫一次sqlite3_step()就相當fetch下一行資料,當sqlite3_step()成功fetch一行資料時,返回sqlite_row,當fetch完所有的資料時,再呼叫sqlite3_step()後會返回sqlite_done

當不在需要使用sqlite3_stmt物件時,需要呼叫sqlite_finalize(sqlite3_stmt *pstmt)釋放掉

當不再需要進行資料庫操作時,需要呼叫sqlite_close(sqlite3 *pdb)關閉資料庫鏈結。

C語言封裝sqlite3 API

執行類似insert,update,create,drop這些不需要結果的sql語句。int executenoquery sqlite3 db,const char sql if sqlite3 step pstmt sqlite done if pstmt null sqlite3 finali...

Sqlite3學習筆記

1 觸發器 trigger 說明 a sqlite3觸發器只支援for each row,不支援for each statment,即只能對行的增刪改進行監聽,不能對單條sql語句進行監聽 b sqlite3觸發器觸發的執行結果只能執行dml操作,無法執行ddl操作 語法格式 create trig...

sqlite3學習筆記

配置的環境 python version 3.6 django version 1.11.5 1.建立sqlite3資料庫 執行python3 manage.py syncdb提示unknown command syncdb python3 manage.py syncdb unknown comm...