SQLite函式應用(二)

2021-06-05 09:18:22 字數 3143 閱讀 8180

callback函式

sqlite3* db;

int rc;

char* zerr;

rc = sqlite3_open("test.db, &db);

if(rc) cout<<"error"<

char * data = "callback";

char * sql = "select * from test";

rc = sqlite3_exec( db, sql, callback, data, &zerr );

if( rc != sqlite_ok) cout<<"error"<

sqlite3_close(db);

int callback(void* data, int ncols, char**values, char** headers)

對sqlite3_exec執行結果中查詢到的每條記錄應用callback函式

每條記錄的相應字段值存放於values陣列,表頭存放於headers陣列,可以完成相應資料處理

sqlite3_get_table查詢

char ** result;

int nrows, ncols;

char * zerr;

char * sql = "select * from test;";

int rc = sqlite3_get_table( db, sql, &result, &nrows, &ncols,  &zerr );

cout<<"行數: "<< nrows<

cout<<"列數: "<< ncols<

for( int i = 0; i <= nrows; i++ )

sqlite3_free_table(result);

sqlite3_get_table 將查詢得到的結果全部存入result陣列,並可得到行數和列數

注意,第一行是表頭

預處理查詢

int rc;

sqlite3 *db;

sqlite3_stmt *stmt;

char *sql = "select * from episodes;";

const char *tail;

rc = sqlite3_open("test.db", &db);

rc =sqlite3_prepare(db, sql, (int)strlen(sql), &stmt, &tail);

rc =sqlite3_step(stmt);

int  ncols =sqlite3_column_count(stmt);

while(rc == sqlite_row)       //sqlite3_step() has another row ready   #define sqlite_row  100

sqlite3_finalize(stmt);

sqlite3_close(db);

sqlite3_prepare()也能接受乙個包括多個sql語句的字串,但是只處理第乙個sql

若想處理多個,可應用tail引數,如下

while(

sqlite3_complete(sql))  

取字段資訊

sqlite3_stmt * : statement handle

int iconl :  列號

const char *sqlite3_column_name( sqlite3_stmt*, int icol );        //獲取欄位名稱

const char *sqlite3_database_name( sqlite3_stmt*, int icol );     //獲取資料庫名稱

const char *sqlite3_table_name( sqlite3_stmt*, int icol );           //獲取表的名稱

intsqlite3_column_type( sqlite3_stmt*, int icol );          //sqlite本身的型別,或稱儲存類

返回值說明 

1:sqlite_integer  

2:sqlite_float  

3:sqlite_text  

4:sqlite_blob  

5:sqlite_null

const char *sqlite3_column_decltype( sqlite3_stmt*, int icol );   //字段宣告時的型別

如果結果集中的一列不是來自乙個實際的字段(如來自於表示式、函式或聚合的結果),這個函式將返回null

sqlite3_column_***()函式取當前記錄中每個欄位的值

***表示你希望得到的資料型別,包括以下函式:

intsqlite3_column_int(sqlite3_stmt*, inticol);

doublesqlite3_column_double(sqlite3_stmt*,int icol);

long long intsqlite3_column_int64(sqlite3_stmt*,int icol);

const void*sqlite3_column_blob(sqlite3_stmt*, int icol);

const unsigned char*sqlite3_column_text(sqlite3_stmt*, int icol);

const void*sqlite3_column_text16(sqlite3_stmt*, int icol);

SQLite函式應用(一)

開啟資料庫 sqlite3 open int sqlite3 open const char filename,database filename utf 8 sqlite3 ppdb out sqlite db handle filename引數是檔名,或字串 memory 或乙個空指標 null...

SQLite 實現與應用

1 前言 有一些日子沒有仔細關注sqlite了,今天開啟其主頁,發現其最新的版本已經是3.6.22了,更讓我驚喜的是它的使用者越來越多,而且郵件列表的關注者也越來越多,突然覺得自己已經太old了。驚喜的同時,不得不聊上幾句了。firefox 這是我的機器上v3.5.7安裝目錄下的檔案 可以發現用的s...

SQLite 時間函式

code home 未分類 sqlite日期和時間函式不求人 sqlite日期和時間函式不求人 posted byadmin on星期四 18十二 2008 sqlite包含了如下時間 日期函式 datetime 產生日期和時間 date 產生日期 time 產生時間 strftime 對以上三個函...