sqlite3_exec的函数原型:
int sqlite3_exec(
sqlite3 *pDb,
const char *sql,
int (*callback)(void *arg, int col, char **str, char **name),
void *arg,
char **errmsg
)
参数说明:
pDb:打开数据库的句柄
sql:要执行的SQL语句
callback:回调函数,处理SQL语句执行的结果(查询操作)
一条结果调用一次该回调函数。(注:回调函数必须返回SQLITE_OK)
arg:exec的第四个参数
col:本条结果的字段数
str:记录字段值的数组
name:记录字段名的数组
arg:传递给回调函数的第一个参数
errmsg:错误信息
返回值:
成功返回SQLITE_OK,否则打开失败
例子:
#include <stdio.h>
#include "sqlite3.h"
//查询的回调函数
int sql_callback(void *arg,int col,char **str,char **name)
{
int i;
for(i=0;i<col;i++){
printf("%s:%s ",name[i],str[i]);
}
printf("\n");
//返回SQLITE_OK表示执行成功
return SQLITE_OK;
}
int main()
{
sqlite3 *pDb = NULL;
//1.打开数据库
int res = sqlite3_open("./test.db",&pDb);
if(res!=SQLITE_OK){
printf("数据库打开失败!\n");
return -1;
}
printf("数据库打开成功!\n");
int id = 0;
char sql[128] = {};
printf("请输入要查找的id:");
scanf("%d",&id);
sprintf(sql,"select * from mytbl where id=%d;",id);
//构建SQL语句
//const char *sql = "create table if not exists mytbl(id int unique,name ntext,age int);";//建表
//const char *sql = "insert into mytbl values(1,'宋江',36);";//插入
//const char *sql = "insert into mytbl values(2,'李逵',24);";//插入
//const char *sql = "insert into mytbl values(3,'潘金莲',21);";//插入
//const char *sql = "select * from mytbl;";//查询
//2.执行SQL语句
res = sqlite3_exec(pDb,sql,sql_callback,NULL,NULL);
if(res!=SQLITE_OK){
printf("sql语句执行失败!\n");
return -1;
}
printf("sql语句执行成功!\n");
//3.关闭数据库
sqlite3_close(pDb);
return 0;
}
执行结果: