sqlite3介面簡要說明

2022-09-05 15:45:14 字數 3006 閱讀 5904

本文介紹一下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

gns3 介面說明 轉

dynamips 支援的模組 首先從c7200 開始 slot 0 c7200 io fe 支援1 個fastethernet 介面 c7200 io 2fe 支援2 個fastethernet 介面 dynamipsgui 2.3 裡面沒有這個選項,想用只有自己添 加了 c7200 io ge e...

類小結3 介面 內部類

內部類提供了更好的封裝,把內部類隱藏到外部類之內,不允許同乙個包中的其他類訪問該類,也可以使用private將內部類隱藏起來 定義為static的內部類稱為靜態內部類 非靜態內部類不能宣告static成員,只有靜態的內部類可以宣告static成員,且可以訪問外部類的靜態成員或靜態方法,內部類可以直接...

依賴注入例項3 介面注入

介面注入 也就是說將注入的 放在了介面裡,與建構函式和屬性注入在整體 結構上不同。用介面可以提高類的靈活性,將注入的 抽象出來放入介面裡這樣就不只是order類可以寫入資料庫了,其他的類如果也想寫入資料庫去實現介面即可。本篇 與前兩篇結構一樣,只是多了個注入用的介面 sqlserverdal acc...