SQLite3 C C 程式設計介面介紹

2021-06-18 01:02:52 字數 3022 閱讀 9494

本文介紹一下sqlite c/c++介面。

早期的sqlite c/c++介面只有5個介面函式, 很容易學習。 新版本的sqlite新增了很多功能, 目前大概有185個api介面。本文介紹一些核心的api介面和物件。

1. 核心物件

資料庫連線物件: sqlite3

prepared_statement物件: sqlite3_stmt

嚴格的講 sqlite3_stmt物件也不是必須的, 另外兩個封裝了qlite3_stmt的介面sqlite3_exec和sqlite3_get_table可以代替sqlite3_stmt物件完成資料訪問工作。 但是理解sqlite3_stmt對於充分使用sqlite有很大幫助。

以下是一些操作 sqlite3和sqlite3_stmt物件的介面。下面這些名字只是提供乙個概念,實際的函式可能會有很多版本比如sqlite3_open() 有,sqlite3_open_v16(), sqlite3_open_v2()

sqlite3_open()

sqlite3_prepare()

sqlite3_step()

sqlite3_column()

sqlite3_finalize()

sqlite3_close()

函式說明

sqlite3_open() 開啟乙個資料庫連線, 返回sqlite3物件

sqlite3_prepare() 此函式將sql轉換成sqlite3_stmt物件, 通常使用sqlite3_prepare_v2()

sqlite3_step()  此函式單步執行sqlite3_stmt

sqlite3_column()   返回 sqlite3_stmt所在行的指定column的值, 有如下具體函式

* sqlite3_column_blob()

* sqlite3_column_bytes()

* sqlite3_column_bytes16()

* sqlite3_column_count()

* sqlite3_column_double()

* sqlite3_column_int()

* sqlite3_column_int64()

* sqlite3_column_text()

* sqlite3_column_text16()

* sqlite3_column_type()

* sqlite3_column_value()

sqlite3_finalize()  銷毀 sqlite3_stmt物件, 所有sqlite3_stmt物件都應該銷毀以防止記憶體洩漏

sqlite3_close()  關閉資料庫連線,  銷毀sqlite3物件, 所有與這個sqlite3物件相關的sqlite3_stmt物件都應該在呼叫這個函式之前銷毀。

2. 繫結和重新執行sqlite3_stmt

sqlite3_reset():  此函式使得執行過sqlite3_step()的sqlite3_stmt重新執行, 相當於將游標返回到開始位置重新讀取資料, sqlite3_reset()的效率比重新建立乙個sqlite3_stmt搞很多。

sqlite3_bind(): 此函式用於insert sql, 當同乙個insert sql要插入一系列資料時使用, 每次sqlite3_step()後重新bind資料。

3. 一般用法和步驟

(1) create a prepared statement using sqlite3_prepare().

(2) evaluate the prepared statement by calling sqlite3_step() one or more times.

(3) for queries, extract results by calling sqlite3_column() in between two calls to sqlite3_step().

(4) destroy the prepared statement using sqlite3_finalize().

4. 簡易介面

sqlite3_get_table()

sqlite3_exec()

5. 例子

view plaincopy to clipboardprint?

01.void basic_inte***ce()  

02.  

16.    rc= sqlite3_prepare_v2(db,sql, strlen(sql), &stmt,0);    

17.    if( rc )  

22.    //right align output format  

23.    printf("%10s %10s %10s/n", "id", "street", "city");  

24.    printf("%10s %10s %10s/n", "---", "---", "---");  

25.    while(sqlite3_step(stmt)==sqlite_row )   

31.    sqlite3_finalize(stmt);  

32.    sqlite3_close(db);  

33.} 

void basic_inte***ce()

rc= sqlite3_prepare_v2(db,sql, strlen(sql), &stmt,0); 

if( rc )

//right align output format

printf("%10s %10s %10s/n", "id", "street", "city");

printf("%10s %10s %10s/n", "---", "---", "---");

while(sqlite3_step(stmt)==sqlite_row )

sqlite3_finalize(stmt);

sqlite3_close(db);}

參考:an introduction to the sqlite c/c++ inte***ce

分享到:

SQLite學習手冊 C C 介面簡介

一 概述 在sqlite提供的c c 介面中,其中5個apis屬於核心介面。在這篇部落格中我們將主要介紹它們的用法,以及它們所涉及到的核心sqlite物件,如database connection和prepared statement。相比於其它資料庫引擎提供的apis,如oci mysql api...

sqlite3 命令介紹

用sqlite3建立資料庫的方法很簡單,只要在shell下鍵入 以下 符號為shell提示號,請勿鍵入 sqlite3 foo.db 進入了sqlite3之後,會看到以下文字 sqlite version 3.1.3 enter help for instructions sqlite 這時如果使用...

朱有鵬 socket程式設計介面介紹(3)

朱有鵬 socket程式設計介面介紹 3 建立連線 socket 函式類似於open 函式,用來開啟乙個網路連線,如果成功則返回乙個網路檔案描述符 int型別 之後我們操作這個網路連線都通過這個網路檔案描述符。include int socket int domain,int type,int pr...