sqlite手冊

用戶手冊:http://wenku.baidu.com/view/872d70ece009581b6bd9eb75.html

百科百科:.net php c c++調用實例

SQLite是一個開源的嵌入式關係數據庫,SQLite可移植性好,很容易使用,很小,高效而且可靠,佔用資源少。
SQLite嵌入到使用它的應用程序中,它們共用相同的進程空間,而不是單獨的一個進程。從外部看,它並不像一個RDBMS,但在進程內部,它卻是完整的,自包含的數據庫引擎。

嵌入式數據庫的一大好處就是在你的程序內部不需要網絡配置,也不需要管理。因爲客戶端和服務器在同一進程空間運行。SQLite 的數據庫權限只依賴於文件系統,沒有用戶帳戶的概念。SQLite 有數據庫級鎖定,沒有網絡服務器。它需要的內存,其它開銷很小,適合用於嵌入式設備。你需要做的僅僅是把它正確的編譯到你的程序。

2. 術語

Sql語句: 用來操作已打開的數據庫的操作語句

3. 常用API使用說明

3.1 所需頭文件

#include <sqlite3.h>

3.2 常見API

3.2.1 打開數據庫

原型:int sqlite3_open(const char *filename, sqlite3 **ppDb)

功能:打開數據庫文件

參數:filename 所要打開的文件名

*ppDb 成功打開文件後用來操作數據庫的指針

返回值:SQLITE_OK 表示成功打開文件

其他值 表示打開失敗

3.2.2 關閉數據庫

原型:int sqlite3_close(sqlite3 * pDb)

功能:打開數據庫文件

參數: ppDb 成功打開文件後用來操作數據庫的指針

返回值:SQLITE_OK 表示關閉成功

SQLITE_BUSY 表示關閉失敗

3.2.3 執行sql語句

原型:int sqlite3_exec(sqlite3* pDb,

Const char *sql, int (*callback)(void*,int,char**,char**),

Void* arg,

char**errmsg)

功能:執行sql語句

參數: pDb 所要操作數據庫的指針

Sql 要執行的sql語句

Callback 執行語句後調用的回調函數指針

arg 傳遞給回調函數的第一個參數

errmsg 返回的錯誤信息

返回值:SQLITE_OK 表示關閉成功

SQLITE_BUSY 表示關閉失敗

3.2.4 編譯sql語句的聲明

原型:int sqlite3_prepare (sqlite3* pDb, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail)

功能: 編譯要執行sql語句

參數: pDb 所要操作數據庫的指針

zSql 要執行的sql語句

nByte sql語句的長度

ppStmt sql語句編譯的結果

pzTail 返回的錯誤信息

返回值:SQLITE_OK 表示關閉成功

SQLITE_BUSY 表示關閉失敗

3.2.5 表格行的步進

原型:int sqlite3_step(sqlite3_stmt* pStmt )

功能: 使數據庫指針指向下一行

參數: pStmt 數據庫指針

返回值:SQLITE_ROW 表示該行不爲空

其他 表示該行爲空

3.2.6 獲取該行的某列的int型數據

原型:int sqlite3_column_int(sqlite3_stmt* pStmt , int iCol)

功能: 獲取pStmt所指向的該列的第iCol列int型數據

參數: pStmt 數據庫指針

iCol 第幾列

3.2.7 獲取該行的某列的text型數據

原型: int sqlite3_column_text(sqlite3_stmt* pStmt , int iCol)

功能: 獲取pStmt所指向的該列的第iCol列text型數據

參數: pStmt 數據庫指針

iCol 第幾列

3.2.8 獲取該行的某列的blob型數據

原型: int sqlite3_column_blob (sqlite3_stmt* pStmt , int iCol)

功能: 獲取pStmt所指向的該列的第iCol列blob型數據

參數: pStmt 數據庫指針

iCol 第幾列

3.2.9 獲取該行的某列的double型數據

原型: int sqlite3_column_double (sqlite3_stmt* pStmt , int iCol)

功能: 獲取pStmt所指向的該列的第iCol列double型數據

參數: pStmt 數據庫指針

iCol 第幾列

3.2.10 釋放一個已準備的聲明的類

原型: int sqlite3_finalize(sqlite3_stmt *pStmt)

功能: 操作完數據庫後調用該函數釋放使用的空間

參數: pStmt 數據庫指針

返回值:SQLITE_OK 表示關閉成功

SQLITE_BUSY 表示關閉失敗

4. 使用實例

#include <sqlite3.h>

#include <stdio.h>

#include <string.h>

//回調函數

int ListTablesName_callback(void *pDB, int argc, char **argv, char **azColName)

{

int ret;

char pSqlQuerySel[128] = "select * from ";

char *pError = NULL;

sqlite3_stmt *pStmt = NULL;

strcat(pSqlQuerySel, argv[0]);

fprintf(stdout, "%s\n", pSqlQuerySel);

//準備讀取數據

ret = sqlite3_prepare((sqlite3 *)pDB, pSqlQuerySel, strlen(pSqlQuerySel), &pStmt, (const char**)&pError);

if (ret != SQLITE_OK)

{

fprintf(stderr, "sqlite3_prepare fail\n");

return -1;

}

while (1)

{

ret = sqlite3_step(pStmt); //移動記錄集

if (ret != SQLITE_ROW)

break;

fprintf(stdout, "%d ", sqlite3_column_int(pStmt, 0));

fprintf(stdout, "%s \n", sqlite3_column_text(pStmt, 1));

}

return 0;

}

int main()

{

int ret = 0;

sqlite3 *pDB = NULL;

sqlite3_stmt *pStmt = NULL;

char *pError = NULL;

char *pListTablesNameSel = (char*)"SELECT name FROM sqlite_master";//列出所以表名語句

//打開文件

ret = sqlite3_open("test.db", &pDB);

if (ret != SQLITE_OK)

{

fprintf(stderr, "can't open database : %s\n", sqlite3_errmsg(pDB));

sqlite3_close(pDB);

return -1;

}

//查找源文件中所有表名

ret = sqlite3_exec(pDB, pListTablesNameSel, ListTablesName_callback, pDB, &pError);

if (ret != SQLITE_OK)

{

fprintf(stderr, "list table count error: %s", sqlite3_errmsg(pDB));

sqlite3_close(pDB);

return -1;

}

return 0;

}

編譯:g++ example.cpp –lsqlite3

注意:這裏需要把sqlite的頭文件和庫包含在環境變量中

5 終端命令行操作數據庫

編譯完sqlite源碼後可以得到一個可以直接操作數據庫文件的可執行文件,名字爲sqlite3。

下面簡單介紹命令行操作數據庫的命令

# ./sqlite3 test.db

sqlite> .tables //顯示test.db中所有的表

info login

sqlite> .schema //顯示test.db中所有的表的建表語句

CREATE TABLE info(id int, name text);

CREATE TABLE login(id int, name text);

sqlite> .schema info //查詢某個表的創建語句

CREATE TABLE info(id int, name text);

sqlite> .help //顯示所以命令

sqlite> select * from info; //查表語句

1|wang

2|liu

1|zhang

sqlite>.quit //退出操作

sqlite3兼容sql中大部分常用的sql語句,由於sql語句比較多,這裏就不一一例舉,如果需要了解更加深入,可以上網查詢

發佈了208 篇原創文章 · 獲贊 21 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章