函数原型:sql
int sqlite3_open(const char* fileName, sqlite3** ppDB);数据库
函数功能:打开一个数据库;若该数据库文件不存在,则自动建立。数组
输入参数:fileName,待打开的数据库文件名称,包括路径,以’\0’结尾函数
输出参数:ppDB,返回打开的数据库句柄布局
返回值:执行成功返回SQLITE_OK,不然返回其余值;spa
函数原型:指针
int sqlite3_close(sqlite3* pDB);code
函数功能:关闭一个打开的数据库;sqlite
输入参数:pDB,打开的数据库句柄接口
返回值:执行成功返回SQLITE_OK,不然返回其余值
函数原型:
const char *sqlite3_errmsg(sqlite3* pDB);
函数功能:获取最近调用的API 接口返回的错误说明,
输入参数:pDB,打开的数据库句柄
sqlite3 *ppdb; ret=sqlite3_open("chat.db",&ppdb); if(ret!=SQLITE_OK) { printf("sqlite3_client_open:%s\n",sqlite3_errmsg(ppdb)); exit(1); }
函数原型:
int sqlite3_exec(sqlite3* pDB, const char *sql, sqlite_callback callback, void*para, char** errMsg);
函数功能:编译和执行零个或多个SQL 语句,查询的结果返回给回调函数callback
输入参数:
pDB,数据库句柄;
sql,待执行的SQL 语句字符串,以’\0’结尾;
callback,回调函数,用来处理查询结果,若是不须要回调(好比作insert 或者delete 操做时),能够输入NULL;
para,用户传入的参数,能够为NULL,该参数指针最终会被传给回调函数callback,供用户在回调函数中使用;
输出参数:errMsg,返回错误信息,注意是指针的指针。
返回值:执行成功返回SQLITE_OK,不然返回其余值
回调函数sqlite_callback介绍:
函数原型:
int sqlite3_get_table(sqlite3* pDB, const char *sql,char ***pResult, int * rowCount,int * columnCount, char** errMsg);
函数功能:执行SQL 语句,经过一维数组返回结果;通常用于数据记录查询
输入参数:
pDB,打开的数据库句柄;
sql,待执行的SQL 字符串,以’\0’结尾;
输出参数:
pResult,查询结果,是由字符串组成的一维数组(不要觉得是二维数组,更不要觉得是三维数组)。它的内存布局是:前面是字段名称,后面紧接着每一个字段的值;
rowCount,查询出多少条记录(即查出多少行);
columnCount,查询出来的记录有多少个字段(多少列);
errMsg,返回错误信息;
返回值:执行成功返回SQLITE_OK,不然返回其余值
char sql[128] = {0}; char **resultp=NULL; char *errmsg=NULL; int nrow,ncolumn; sprintf(sql,"select * from student;"); ret=sqlite3_get_table(ppdb,sql,&resultp,&nrow,&ncolumn,&errmsg); if(ret!=SQLITE_OK) { printf("Find failed:%s\n",errmsg); sqlite3_free(errmsg); exit(0); } int i; for(i=0;i<(nrow+1)*ncolumn;i+=3) { if(!strcmp(resultp[i],f->username)) //若是匹配成功 { return RES_USER_EXIST; } }
函数原型:
void sqlite3_free_table(char **result);
函数功能:释放查询结果占用的内存;输入参数:result,经过函数sqlite3_get_table()查询到的记录结果
返回值:无
char **resultp=NULL;
sqlite3_free_table(resultp); //用完resultp 以后要free