使用sqlite3_exec回掉函数输出查询内容

#include <stdlib.h>
#include <stdio.h>
#include <sqlite3.h>


int my_callback(void *param, int f_num, char **f_value, char **f_name)
{
        int i;
for(i = 0; i <= (f_num + 1) / 2; i++)
{
   printf("%s\t",*(f_name+i));
   printf("%s\n",*(f_name+i+2));
}
}


void my_search(sqlite3 * db)
{
        char sql[100];
    char *errmsg;
    int nrow,ncolumn;
char **azresult;
        int id,ret = 0;


        printf("输入id\n");
        scanf("%d",&id);
        printf("\n");




        sprintf(sql,"select * from mytable where id like '%d%';",id);

        ret = sqlite3_exec(db,sql,my_callback,NULL,&errmsg);



if(ret == SQLITE_OK)
{
printf("select error : %s\n",errmsg);
}
printf("input any character\n");
        getchar();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
`sqlite3_prepare_v2`和`sqlite3_exec`函数都是SQLite数据库的API函数,但在功能和使用方面有所不同。 `sqlite3_prepare_v2`函数是用于准备SQL语句的,它需要三个参数:一个SQLite数据库连接对象,一个SQL语句字符串和一个指向已编译SQL语句的指针。它将SQL语句编译为字节码,但并不执行该语句,因此它通常与`sqlite3_step`函数结合使用,以逐步执行SQL语句。 例如,以下代码演示了如何使用`sqlite3_prepare_v2`和`sqlite3_step`函数来执行SELECT语句: ``` sqlite3_stmt* stmt; const char* sql = "SELECT * FROM mytable"; sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); while (sqlite3_step(stmt) == SQLITE_ROW) { // 处理结果集 } sqlite3_finalize(stmt); ``` 相比之下,`sqlite3_exec`函数可以在一次调用中执行一条完整的SQL语句。它需要四个参数:一个SQLite数据库连接对象,一个SQL语句字符串,一个回调函数和一个回调函数的第一个参数。该回调函数将在每次执行SQL语句时调用,以处理结果集或执行其他自定义操作。 例如,以下代码演示了如何使用`sqlite3_exec`函数来执行INSERT语句: ``` const char* sql = "INSERT INTO mytable (id, name) VALUES (1, 'John')"; sqlite3_exec(db, sql, NULL, NULL, NULL); ``` 总的来说,`sqlite3_prepare_v2`函数比`sqlite3_exec`函数更灵活,因为它允许逐步执行SQL语句,并提供更多的控制和错误处理机制。但是,如果您只需要执行一次简单的SQL语句,则`sqlite3_exec`函数可能更方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值