sqlite3简单应用

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

int callback(void *arg,int f_num,char **f_value,char **f_name)//回调
{
    printf("srg %s\n",(char *)arg);
    for (int i = 0; i < f_num; i++)
    {
        printf("%s  ",f_name[i]);

    }
    putchar(10);
    for (int i = 0; i < f_num; i++)
    {
        printf("%s  ",f_value[i]);

    }
    putchar(10);
    return 0;
}
int main(int argc, char const *argv[])
{
    sqlite3 *db;
    if (sqlite3_open("./student.db",&db)!=0)//打开
    {
        fprintf(stderr,"err:%s\n",sqlite3_errmsg(db));
        return -1;
    }
    printf("打开成功\n");
    
    char *errmsg=NULL;
    /* 避免重复 执行,所以注释了
    if (sqlite3_exec(db,"create table stu(id int primary key,\
    name cahr,score float);",NULL,NULL,&errmsg)!=SQLITE_OK)//插入
    {
        fprintf(stderr,"err:%s\n",errmsg);
        //return -1;
    }

    int n;//输入几个
    int id;
    char name[32];
    float score;
    char sql[128];//seq语句存放位置
    printf("请输入:\n");
    scanf("%d",&n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d %s %f",&id,name,&score);
        sprintf(sql,"insert into stu values(%d,\"%s\",%f);",id,name,score);//插入
        printf("sql:%s\n",sql);
        if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
        {
            fprintf(stderr,"err:%s\n",errmsg);
            return -1;
        }
    }
    */
    //查询
    if (sqlite3_exec(db,"select * from stu;",callback,"hello",&errmsg)!=SQLITE_OK)
    {
        fprintf(stderr,"err %s\n",errmsg);
        return -1;
    }
    sqlite3_close(db);
    return 0;
}

sqlite3_exec(db,"select * from stu;",callback,"hello",&errmsg)//参数

sqlite3*                 //打开的数据库
const char* sql,    //执行的sql功能语句
*callback,             //sql语句对应的回调函数
void* data,           //传递给回调函数的 指针参数,我在这里定义为了hello,方便理解
char **errmsq      //错误

callback(void *arg,int f_num,char **f_value,char **f_name)//回调的参数

功能:select:每找到一条记录自动执行一次回调函数

para:传递给回调函数的参数(由 sqlite3_exec() 的第四个参数传递而来)

f_num:记录中包含的字段数目

f_value:包含每个字段值的指针数组(列值)

f_name:包含每个字段名称的指针数组(列名)

返回值:成功返回SQLITE_OK,失败返回-1,每次回调必须返回0后才能继续下次回调

 运行结果

 个人理解,如果有误,欢迎指正

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值