几种常用的sqlite3数据库函数介绍
函数原型:
int sqlite3_open(const char* fileName, sqlite3** ppDB);
函数功能:打开一个数据库;若该数据库文件不存在,则自动创建。
输入参数:fileName,待打开的数据库文件名称,包括路径,以’\0’结尾
输出参数:ppDB,返回打开的数据库句柄
返回值:执行成功返回SQLITE_OK,否则返回其他值;
函数原型:
int sqlite3_close(sqlite3* pDB);
函数功能:关闭一个打开的数据库;
输入参数: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