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