24.10.3学习目录
一.c语言操作数据库
(1)打开、关闭数据库函数
//打开数据库
int sqlite3_open(char *db_name,sqlite3 **db);
db_name:数据库文件名,若文件名中有ASCLL码中以外的字符,其必须为UTF-8;
sqlite3 :数据库标识,其为数据库操作句柄,其可以对数据库进行相应操作;
成功返回SQLITE_OK;
//关闭数据库
int sqlite3_close(sqlite3 *db);
成功返回SQLITE_OK;
(2)执行SQL语句函数
执行sql指向的SQL语句,若结果集不为空,函数会调用函数指针callback所指向的函数
int sqlite_exec(sqlite3 *db,const char *sql,exechandler_t callback,void *arg,char **errmsg);
db:数据库的标识;
sql:SQL语句,以;结尾;
callback:其为回调函数指针,当该条语句执行之后,sqlite3会去调用提供好的该函数,其用于处理有结果集时;
arg:当执行sqlite_exec的时候传递给回调函数的参数;
errmsg:存放错误信息的地址,打印错误信息,printf(“%s\n”,errmsg);
(3)回调函数
用户定义,处理sql语句执行后返回的结果集
//回调函数定义
typedef int (*exechandler_t)(void *para,int n_column,char **column_value,char **column_name);
para:表示sql执行函数sqlite_exec传给该函数的参数,其为任意类型;
n_column:结果集的列数;
column_value:指针数组的地址,存放一行信息中各个列值的首地址;
column_name:指针数组的地址,存放一行信息中各个列值对应列名的首地址;
(4)获取表的函数(不使用回调函数)
函数将结果集相关的数据的 地址保存在函数的参数中
int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resultp,int *nrow,int *ncolumn,char **errmsg);
db:数据库标识;
sql:SQL语句;
resultp:指针数组的地址,其记录了结果集的数据,
nrow:结果集的行数;
ncolumn:结果集的列数;
errmsg:错误信息;
//释放sqlite3_get_table分配的内存
void sqlite3_free_table(char **resultp);