一、本文包含函数列表
函数名称函数原型 sqlite3_openint sqlite3_open(const char *filename, sqlite3 **ppDb*);sqlite3_exec int sqlite3_exec(sqlite3*, const char *sql, int *callback, void* data, char **errmsg);sqlite3_prepareint sqlite3_prepare(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail );sqlite3_prepare_v2int sqlite3_prepare_v2(sqlite3 *db,const char *zSql,int nByte,sqlite3_stmt **ppStmt, const char **pzTail);sqlite3_bind_*//这个为函数格式,不能直接用,下面的函数可以直接调用int sqlite3_bind_*(sqlite3_stmt*, int, const char*, int n,void(*)(void*));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*);sqlite3_stepint sqlite3_step(sqlite3_stmt *pStmt);sqlite3_resetint sqlite3_reset(sqlite3_stmt *pStmt);sqlite3_colum//获取列内容//利用这个系列的函数,获取列的值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);sqlite3_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);sqlite3_colum//获取列参数//获取列数int sqlite3_column_count(sqlite3_stmt *pStmt);//获取第i列列名const char *sqlite3_column_name(sqlite3_stmt*,int i);//返回第i列数据类型const char *sqlite3_column_decltype(sqlite3_stmt *, int i);sqlite3_finalize int sqlite3_finalize(sqlite3_stmt *pStmt);sqlite3_closeint sqlite3_close(sqlite3 *db);sqlite3_errcodeint sqlite3_errcode(sqlite3 *db);sqlite3_errmsgconst char *sqlite3_errmsg(sqlite3 *db);sqlite3_get_tableint sqlite3_get_table(sqlite3*, const char *sql, char ***resultp, int *nrow, int *ncolumn, char **errmsg );sqlite3_free_tablevoid sqlite3_free_table(char **result);sqlite3_mallocvoid *sqlite3_malloc(int);sqlite3_reallocvoid *sqlite3_realloc(void*, int);sqlite3_freevoid sqlite3_free(void*);//待扩充待扩充
二、部分重要参数描述(必看)
参数描述sqlite3 **ppDbsqlite3 类型的二级指针sqlite3 *dbsqlite3 类型的指针const char *zSqlsql执行语句sqlite3_stmt **ppStmtsqlite3_stmt 类型的二级指针const char **pzTail指向sql执行语句中未使用部分int iCol第iCol列
三、数据库宏定义、值、描述(必看)
宏定义值描述SQLITE_OK0成功SQLITE_ERROR1Sql 错误或数据库丢失SQLITE_INTERNAL2Sqlite 内部逻辑错误SQLITE_PERM3拒绝访问权限SQLITE_ABORT 4回调程序请求中止SQLITE_BUSY5数据库文件被锁定了SQLITE_LOCKED6数据库中的一个表被锁定了SQLITE_NOMEM7一个 malloc ()失败了SQLITE_READONLY8尝试写一个只读数据库SQLITE_INTERRUPT9操作被 sqlite3_interrupt ()终止SQLITE_IOERR10出现了某种磁盘输入输出错误SQLITE_CORRUPT 11数据库磁盘映像格式不正确SQLITE_NOTFOUND12未使用,表或记录没有找到SQLITE_FULL13插入失败,因为数据库已满SQLITE_CANTOPEN14无法打开数据库文件SQLITE_PROTOCOL15未使用,数据库锁定协议错误SQLITE_EMPTY 16数据库是空的SQLITE_SCHEMA 17数据库模式改变了SQLITE_TOOBIG18字符串或 blob 超过大小限制SQLITE_CONSTRAINT19由于违反约束而中止SQLITE_MISMATCH20数据类型不匹配SQLITE_MISUSE21数据库Library使用不当SQLITE_NOLFS22使用主机不支持的操作系统功能SQLITE_AUTH23拒绝授权SQLITE_FORMAT24辅助数据库格式错误SQLITE_RANGE25sqlite3_bind函数的第二个参数超出范围SQLITE_NOTADB26打开的文件不是数据库文件SQLITE_ROW 100Sqlite3_step()准备好了另一行SQLITE_DONE101Sqlite3_step()已经执行完毕
四、相关函数详解
1、sqlite3_open
int sqlite3_open(const char *filename, sqlite3 **ppDb*);参数const char *filename//数据库路径sqlite3 **ppDb//数据库二级指针返回值返回类型为int型,数值内容对应第三部分中宏定义表成功返回SQLITE_OK;失败返回其他值用例sqlite3 *db;char *dbPath= "f:/test.db";sqlite3_open(dbPath,&db);功能描述打开一个sqlite数据库文件的连接并且返回一个数据库连接对象
2、sqlite3_prepare_v2
int sqlite3_prepare_v2(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **ppStmt, const char **pzTail );参数sqlite3 *db//成功打开的数据库句柄const char *zSql//UTF8编码的 SQL 语句int nByte//如果nByte小于0,则函数取出zSql中从开始到第一个’0‘终止符的内容;如果nByte不是负的,那么它就是这个函数能从zSql中读取的字节数的最大值。sqlite3_stmt **ppStmt//输出:预编译语句句柄 const char **pzTail//输出:指向 sql 语句中未使用的部分返回值成功返回SQLITE_OK;失败返回错误码,并且ppStmt为NULL 用例sqlite3 *db;char sql_str[100]= "数据库执行语句";sqlite3_stmt *stmt = NULL;sqlite3_prepare_v2(db, sql_str, -1, &stmt, NULL);功能描述将sql文本转换成一个准备语句(prepared statement)对象,同时返回这个对象的指针。
3、sqlite3_bind_text
int sqlite3_bind_text(sqlite3_stmt *pStmt, int n, const char *str, int strlen, void(*)(void*));参数sqlite3_stmt *pStmt//编译语句int n//序号,必须从1开始,从0开始会报错const char *str//字符串int strlen//字符串长度,如果strlen小于0,则函数取出str中从开始到第一个’0‘终止符的内容;如果strlen不是负的,那么它就是这个函数能从str中读取的字节数的最大值。 void(*)(void*)//调用函数指针,此参数有两个常数,SQLITE_STATIC告诉sqlite3_bind_text函数字符串为常量,可以放心使用;而SQLITE_TRANSIENT会使得sqlite3_bind_text函数对字符串做一份拷贝。返回值成功返回SQLITE_OK;失败返回错误码用例sqlite3_bind_text(stmt,1,str,-1,SQLITE_STATIC); //绑定数据功能描述给“准备语句”绑定参数
4、sqlite3_step
int sqlite3_step(sqlite3_stmt *pStmt);参数sqlite3_stmt *pStmt//编译语句返回值SQLITE_BUSY:忙碌. 数据库引擎无法锁定数据去完成其工作. 但可以多次尝试. SQLITE_DONE:完成. sql 语句已经被成功地执行. 在调用 sqlite_reset() 之前, 当前预编译的语句不应该被 sqlite3_step() 再次调用. SQLITE_ROW:查询时产生了结果. 此时可以通过相关的"数据访问函数(column access functions)"来取得数据. sqlite3_step() 的再一次调用将取得下一条查询结果. SQLITE_ERROR:发生了错误. 此时可以通过 sqlite3_errmmsg() 取得相关的错误信息. sqlite3_step() 不能被再次调用. SQLITE_MISUSE:不正确的库的使用. 该函数使用不当.用例sqlite3_step(stmt);功能描述当一条语句被 sqlite3_prepare() 或其相关的函数预编译后, sqlite3_step() 必须被调用一次或多次来评估该预编译语句.
5、sqlite3_reset
int sqlite3_reset(sqlite3_stmt *pStmt);参数sqlite3_stmt *pStmt//编译语句返回值SQLITE_BUSY表示暂时无法执行操作SQLITE_DONE表示操作执行完毕SQLITE_ROW表示执行完毕并且有返回(执行select语句时)此时,我们需要对查询结果进行处理,SQLITE3提供sqlite3_column_*系列函数。 用例sqlite3_reset(stmt);功能描述sqlite3_reset用于重置一个准备语句对象到它的初始状态,然后准备被重新执行。
6、sqlite3_finalize
int sqlite3_finalize(sqlite3_stmt *pStmt);;参数sqlite3_stmt *pStmt//编译语句返回值成功返回SQLITE_OK;失败返回错误码用例sqlite3_finalize(stmt);功能描述销毁前面被sqlite3_prepare创建的准备语句,每个准备语句都必须使用这个函数去销毁以防止内存泄露。
7、sqlite3_close
int sqlite3_close( sqlite3* pDB);;参数sqlite3* pDB//指向数据库的数据库指针返回值SQLITE_OK:成功关闭;SQLITE_BUSY:关闭时还有未完成的预编译语句或二进制句柄用例sqlite3 *db;sqlite3_close(db);功能描述关闭前面使用sqlite3_open打开的数据库连接
8、sqlite3_exec
int sqlite3_exec(sqlite3*, const char *sql, int *callback, void* data, char **errmsg);参数sqlite3* pDB//指向数据库的数据库指针const char* sql //被执行的 SQL 语句 int (*callback)(void*,int,char**,char**) //执行/查询回调函数void* pvoid //传递给回调函数的第一个参数 char**errmsg //错误输出信息 返回值用例sqlite3 *db;sqlite3_close(db);功能描述用来执行若干条 SQL 语句
五、函数使用流程
//有时间了补充
转载请注明原文地址:https://tech.qufami.com/read-22248.html