int sqlite3_open(
const char *filename, /* Database filename (UTF-8) */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
功能:打開數據庫,如果不存在則自動創建.
PARAM1(IN): 數據庫文件名,UTF-8格式
PARAM2(OUT): 返回的數據庫句柄
返回值:返回SQLITE_OK成功,反之失敗(數據庫句柄ppDb為空),失敗值見具體SQLITE_*定義.
=====================================================================================
int sqlite3_close(sqlite3 *);
功能:關閉數據庫
PARAM1(IN):打開的數據庫句柄
返回值:返回SQLITE_OK成功,反之失敗.
=====================================================================================
int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql, /* SQL to be executed */
sqlite3_callback, /* Callback function */
void *, /* 1st argument to callback function */
char **errmsg /* Error msg written here */
);
功能:執行SQL
PARAM1(IN):數據庫句柄
PARAM2(IN):sql語句,以\0結尾.
PARAM3(IN):回調函數
PARAM4(IN):回調參數
PARAM5(OUT):輸出錯誤信息
返回值:SQLITE_OK成功,反之失敗,失敗后錯誤信息見PARAM5;
說明:如果有多條SQL語句,中間用分號(;)隔開.回調函數和回調參數通常在查詢語句會用到,
對每條查詢結果結果都會調用回調函數一次.
回調函數格式:
typedef int(*sqlite3_callback)(void *,int ,char **,char **);
參數1:sqlite3_exec中傳入的參數
參數2:總列數.
參數3:列數據(char*)
參數4:列名稱(char*)
=====================================================================================
int sqlite3_get_table(
sqlite3*, /* An open database */
const char *sql, /* SQL to be executed */
char ***resultp, /* Result written to a char *[] that this points to */
int *nrow, /* Number of result rows written here */
int *ncolumn, /* Number of result columns written here */
char **errmsg /* Error msg written here */
);
功能:查詢表
PARAM1(IN):數據庫句柄
PARAM2(IN):sql語句,以\0結尾.
PARAM3(OUT):查詢結果
PARAM4(OUT):返回行數(多少條數據)
PARAM5(OUT):返回列數(多少字段)
PARAM6(OUT):返回錯誤信息
返回值:SQLITE_OK成功,房子失敗見錯誤信息
=====================================================================================
void sqlite3_free_table(char **result);
功能:釋放通過sqlite3_get_table查詢保存的結果數據
PARAM1(IN):要釋放的數據指針
=====================================================================================
int sqlite3_prepare(
sqlite3 *db, /* Database handle */
const char *zSql, /* SQL statement, UTF-8 encoded */
int nBytes, /* Length of zSql in bytes. */
sqlite3_stmt **ppStmt, /* OUT: Statement handle */
const char **pzTail /* OUT: Pointer to unused portion of zSql */
);
功能:構造查詢
PARAM1(IN):數據庫句柄
PARAM2(IN):sql語句
PARAM3(IN):sql語句長度,設置成-1則自動按字符串計算sql語句長度
PARAM4(OUT):保存的查詢結構體,
PARAM5(OUT):NULL即可
返回值:SQLITE_OK成功.
=====================================================================================
int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
功能:為查詢結構體綁定數據
PARAM1(IN):查詢結構體
PARAM2(IN):綁定第幾個數據(sql語句中的第幾個問號(?))
PARAM3(IN):二進制數據指針
PARAM4(IN):二進制數據長度
PARAM5(IN):析構回調函數,通常設置NULL,結束后自己釋放
返回值:S_OK成功.
說明:綁定函數必須要在sqlite3_step前,sqlite3_prepare或者sqlite3_reset之后調用.
未綁定的參數缺省為NULL,類似的綁定函數還有以下
int sqlite3_bind_double(sqlite3_stmt*, int, double);
int sqlite3_bind_int(sqlite3_stmt*, int, int);
int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite_int64);
int sqlite3_bind_null(sqlite3_stmt*, int);
int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
=====================================================================================
int sqlite3_reset(sqlite3_stmt *pStmt);
功能:重置所有綁定的值,回到剛剛調用sqlite3_prepare后的狀態
=====================================================================================
int sqlite3_step(sqlite3_stmt*);
功能:執行查詢
PARAM1:查詢結構體
返回值:
SQLITE_BUSY:數據庫被鎖,可以等待釋放后重新調用該函數
SQLITE_DONE:成功
SQLITE_ROW:成功并且有數據返回,對每查詢到一條數據都會返回該值,
可以調用sqlite3_column_*函數獲取數據后重新調用處理下一條數據
SQLITE_ERROR:失敗
SQLITE_MISUSE:錯誤的調用,比如已經返回了SQLITE_DONE或者SQLITE_ERROR后還繼續調用該函數
=====================================================================================
int sqlite3_finalize(sqlite3_stmt *pStmt);
功能:釋放查詢結構體
=====================================================================================
int sqlite3_key(
sqlite3 *db, /* Database to be rekeyed */
const void *pKey, int nKey /* The key */
);
功能:為加密的數據庫指定密碼,改函數在sqlite3_open之后調用
=====================================================================================
int sqlite3_rekey(
sqlite3 *db, /* Database to be rekeyed */
const void *pKey, int nKey /* The new key */
);
功能:重設數據庫密碼,如果pKey = 0 或者 nKey = 0,這數據庫不加密
=====================================================================================
const char *sqlite3_libversion(void);
int sqlite3_libversion_number(void);
功能:獲取版本號
sqlite_int64 sqlite3_last_insert_rowid(sqlite3*);
功能:獲取最后插入的行標示.
int sqlite3_changes(sqlite3*);
功能:獲取最近執行的sqlite3_exec影響的行數.
int sqlite3_total_changes(sqlite3*);
功能:獲取自從數據庫打開后有改動的函數
void sqlite3_interrupt(sqlite3*);
功能:打斷或停止數據庫當前操作.
int sqlite3_complete(const char *sql);
功能:判斷語句是否以分號(;)結尾
int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
功能:設置查詢忙碌時的回調處理
說明:缺省的回調函數為空,如果回調函數為空,表鎖定后sqlite3_exec()執行會直接返回SQLITE_BUSY
int sqlite3_busy_timeout(sqlite3*, int ms);
功能:設置查詢超時時間(毫秒)
char *sqlite3_mprintf(const char*,...);
char *sqlite3_vmprintf(const char*, va_list);
char *sqlite3_snprintf(int,char*,const char*, ...);
功能:格式化字符,需要用%q來代替%s.(主要是不用對分號'進行轉義)
void *sqlite3_malloc(int);
void *sqlite3_realloc(void*, int);
void sqlite3_free(void*);
功能:內存函數
int sqlite3_set_authorizer(
sqlite3*,
int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
void *pUserData
);
功能:設置數據庫授權
void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
void *sqlite3_profile(sqlite3*,
void(*xProfile)(void*,const char*,sqlite_uint64), void*);
void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
功能:設置執行回調函數,sqlite3_exec(),sqlite3_step() ,sqlite3_get_table()時會調用
void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
功能:設置事務回調函數
int sqlite3_errcode(sqlite3 *db);
const char *sqlite3_errmsg(sqlite3*);
功能:獲取錯誤碼和錯誤消息
int sqlite3_bind_parameter_count(sqlite3_stmt*);
功能:返回需要綁定的參數數目(sql語句中問號?數量)
const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
功能:獲取綁定參數名字,?參數返回NULL
int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
功能:獲取綁定參數索引
int sqlite3_clear_bindings(sqlite3_stmt*);
功能:清除綁定的參數
int sqlite3_column_count(sqlite3_stmt *pStmt);
功能:獲取列數
const char *sqlite3_column_name(sqlite3_stmt*,int);
功能:獲取列名
const char *sqlite3_column_database_name(sqlite3_stmt*,int);
const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
const char *sqlite3_column_table_name(sqlite3_stmt*,int);
const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
功能:返回列信息?
const char *sqlite3_column_decltype(sqlite3_stmt *, int i);
功能:返回列數據類型
int sqlite3_data_count(sqlite3_stmt *pStmt);
功能:返回數據數量(行數)
const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
double sqlite3_column_double(sqlite3_stmt*, int iCol);
int sqlite3_column_int(sqlite3_stmt*, int iCol);
sqlite_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
int sqlite3_column_type(sqlite3_stmt*, int iCol);
int sqlite3_column_numeric_type(sqlite3_stmt*, int iCol);
sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
功能:獲取列數據
int sqlite3_create_function(
sqlite3 *,
const char *zFunctionName,
int nArg,
int eTextRep,
void*,
void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
void (*xStep)(sqlite3_context*,int,sqlite3_value**),
void (*xFinal)(sqlite3_context*)
);
功能:
const void *sqlite3_value_blob(sqlite3_value*);
int sqlite3_value_bytes(sqlite3_value*);
int sqlite3_value_bytes16(sqlite3_value*);
double sqlite3_value_double(sqlite3_value*);
int sqlite3_value_int(sqlite3_value*);
sqlite_int64 sqlite3_value_int64(sqlite3_value*);
const unsigned char *sqlite3_value_text(sqlite3_value*);
const void *sqlite3_value_text16(sqlite3_value*);
const void *sqlite3_value_text16le(sqlite3_value*);
const void *sqlite3_value_text16be(sqlite3_value*);
int sqlite3_value_type(sqlite3_value*);
int sqlite3_value_numeric_type(sqlite3_value*);
功能:類似sqlite3_column_*函數
posted on 2011-06-10 16:08
我風 閱讀(2887)
評論(0) 編輯 收藏 引用