这是因为回调函数的返回值没有设置为0,而导致的!!看下面示例代码:
#include <stdio.h>
#include <sqlite3.h>
int my_result_find(void *arg, int column,char *val_col[],char *col_head[])
{
int *p= (int *)arg;
if(*p == 100)
{
for(int i=0;i<column;i++)
printf("%s\t",col_head[i]);
*p=0;
}
printf("\n");
for(int i=0;i<column;i++)
printf("%s\t",val_col[i]);
printf("\n");
return 0;
}
int main(int argc, char * argv [ ])
{
sqlite3 *aql;
int r = sqlite3_open(argv[1],&aql);
if(r != SQLITE_OK)
{
printf("open error\n");
return -1;
}
char * erro =NULL;
int q=100;
char *p="select * from stu_info order by NUM asc;";
int ret= sqlite3_exec(
aql, /* 数据库连接对象,你要操作的数据库 */
p, /* 是一条你要执行的SQL语句,以'\0'结尾*/
my_result_find, /*回调函数,只有在select的时候才会作用 */
(void*)&q, /* 回调函数的第一个参数*/
&erro /* 出错信息指针 */
);
if(ret != SQLITE_OK)
{
printf("erron:%s\n",erro);
}
sqlite3_close(aql);
return 0;
}