linux数据库的增删改查(标准库版本)

一 数据库创建和校准函数代码实现

数据库创建函数

在这里插入图片描述

校准函数

在这里插入图片描述
在这里插入图片描述

open 函数:
参数一:数据库名字
参数二 :二级指针  定义一个一级指针取地址赋值给他即可    
校准函数 :
参数说明:open的指针变量 (第一个蚕食)
执行的语句:create table stu(id Integer,name char,score Integer);(第二个参数)
第三第四 参数:暂不用回调函数 直接都为NULL
第五 参数 :二级指针  定义一个一级指针取地址赋值给他即可 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sqlite3.h>

#define sqlite_name "student.db"
 int  main()
 {

     sqlite3 *db;
     char *errmsg;

     if(sqlite3_open(sqlite_name,&db)!=SQLITE_OK)//打开 sqlite3  不等于SQLITE_OK 就是失败
     {
          printf("%s\n",sqlite3_errmsg(db));
            exit(1);
     }
     else//否则就是成功
     {
        printf("sqlite3_opne is success\n");
     }


     if(sqlite3_exec(db,"create table stu(id Integer,name char,score Integer);",NULL,NULL,&errmsg)!=SQLITE_OK)//创建 sqlite3  不等于SQLITE_OK 就是失败
     {
            printf("%s\n",sqlite3_errmsg(db));
             exit(1);

     }
     else//否则就是成功
     {
     {
        printf("sqlite3_exec is success\n");

     }
  return 0}

在这里插入图片描述

二 插入 函数

在这里插入图片描述

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

#define sqlite_name "student.db"

 int do_insert(sqlite3 *db)//插入 成绩 学号 名字 的函数
 {

     int id;
     char name[32]={};
     int score;
     char sql[128]={};

     printf("id:");
     scanf("%d",&id);//输入学号
     getchar();

     printf("name:");
     scanf("%s",name);//输入名字
     getchar();

     printf("score:");
     scanf("%d",&score);//输入成绩
     getchar();

    sprintf(sql,"insert into stu values(%d,'%s',%d);",id,name,score);//学号成绩名字存  放在一个地址

    if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
    {
       printf("%s\n",errmsg);
       exit(1);
    }
    else//成功 打印信息
    {
       printf("stu is success\n");
    }

      return 0;
 }

 int  main()
 {

     sqlite3 *db;
     char *errmsg;

     if(sqlite3_open(sqlite_name,&db)!=SQLITE_OK)//打开 sqlite3  不等于SQLITE_OK 就是失败
     {
          printf("%s\n",sqlite3_errmsg(db));
            exit(1);
     }
     else//否则就是成功
     {
        printf("sqlite3_open is success\n");
     }


     if(sqlite3_exec(db,"create table stu(id Integer,name char,score Integer);",NULL,NULL,&errmsg)!=SQLITE_OK)//创建 sqlite3  不等于SQLITE_OK 就是失败
     {
            printf("%s\n",sqlite3_errmsg(db));
             exit(1);

     }
     else//否则就是成功
     {
     {
        printf("sqlite3_exec is success\n");
     }

     while(1)
     {
         int com;
       printf("*******************\n");
       printf("1:inster 2:query 3:update 4:delete\n");
      
         scanf("%d",&id);
         getchar();

         switch(com)
         {
             case 1 :do_insert(db);//插入 成绩 学号 名字 的函数

             break;

 
         }

     }

   return 0;

 }

1  插入函数的形参和函数名 do_insert(sqlite3 *db);
2 在里面用scanf 输入 并且吸收回车 即可 
3  用:sprintf存储函数 把数据放在一起 
4 用  sqlite3_exec校准   

在这里插入图片描述

三 删除函数

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

#define sqlite_name "student.db"

 int do_insert(sqlite3 *db)//插入 成绩 学号 名字 的函数
 {

     int id;
     char name[32]={};
     int score;
     char sql[128]={};

     printf("id:");
     scanf("%d",&id);//输入学号
     getchar();

     printf("name:");
     scanf("%s",name);//输入名字
     getchar();

     printf("score:");
     scanf("%d",&score);//输入成绩
     getchar();

    sprintf(sql,"insert into stu values(%d,'%s',%d);",id,name,score);//学号成绩名字存  放在一个地址

    if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
    {
       printf("%s\n",errmsg);
       exit(1);
    }
    else//成功 打印信息
    {
       printf("stu is success\n");
    }

      return 0;
 }
int do_insert(sqlite *db)
{
      int id;
     char name[32]={};
     char sql[128]={};
     char *errmsg;
     printf("delete id:");
     scanf(%d”,&id);
     sprintf(sql,"delete from stu where id=%d",id);
   if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
    {
       printf("%s\n",errmsg);
       exit(1);
    }
    else//成功 打印信息
    {
       printf("delete is success\n");
    }   

  reurn 0;
} 



 int  main()
 {

     sqlite3 *db;
     char *errmsg;

     if(sqlite3_open(sqlite_name,&db)!=SQLITE_OK)//打开 sqlite3  不等于SQLITE_OK 就是失败
     {
          printf("%s\n",sqlite3_errmsg(db));
            exit(1);
     }
     else//否则就是成功
     {
        printf("sqlite3_open is success\n");
     }


     if(sqlite3_exec(db,"create table stu(id Integer,name char,score Integer);",NULL,NULL,&errmsg)!=SQLITE_OK)//创建 sqlite3  不等于SQLITE_OK 就是失败
     {
            printf("%s\n",sqlite3_errmsg(db));
             exit(1);

     }
     else//否则就是成功
     {
     {
        printf("sqlite3_exec is success\n");
     }

     while(1)
     {
         int com;
       printf("*******************\n");
       printf("1:inster 2:query 3:update 4:delete\n");
      
         scanf("%d",&id);
         getchar();

         switch(com)
         {
             case 1 :do_insert(db);//插入 成绩 学号 名字 的函数
             case 4do_insert(db);//删除成绩 学号 名字 的函数
             break;

 
         }

     }

   return 0;

 }

在这里插入图片描述

四 更新函数

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

#define sqlite_name "student.db"

 int do_insert(sqlite3 *db)//插入 成绩 学号 名字 的函数
 {

     int id;
     char name[32]={};
     int score;
     char sql[128]={};

     printf("id:");
     scanf("%d",&id);//输入学号
     getchar();

     printf("name:");
     scanf("%s",name);//输入名字
     getchar();

     printf("score:");
     scanf("%d",&score);//输入成绩
     getchar();

    sprintf(sql,"insert into stu values(%d,'%s',%d);",id,name,score);//学号成绩名字存  放在一个地址

    if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
    {
       printf("%s\n",errmsg);
       exit(1);
    }
    else//成功 打印信息
    {
       printf("stu is success\n");
    }

      return 0;
 }
 
int do_update(sqlite3 *db)
{
      int id;
     char name[32]={};
     char sql[128]={};
     char *errmsg;
     
     printf("after update id:");
     scanf(%d”,&id);
     getchar();
     
     printf("after update name :");
     scanf(%s”,name);
     getchar();
     
     printf("after update score:");
     scanf(%d”,&id);
     getchar();
     
    sprintf(sql,"update stu set name='%s',score=%d where id=%d",name,score,id);
     
   if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
    {
       printf("%s\n",errmsg);
       exit(1);
    }
    else//成功 打印信息
    {
       printf("update is success\n");
    }   

  reurn 0;
} 

int do_delete( sqlite3 *db)
{
      int id;
     char sql[128]={};
     char *errmsg;
     
     printf("delete id:");
     scanf(%d”,&id);
     getchar();
     
    sprintf(sql,"delete from stu where id=%d",id);
     
   if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
    {
       printf("%s\n",errmsg);
       exit(1);
    }
    else//成功 打印信息
    {
       printf("delete is success\n");
    }      
     
}
 


 int  main()
 {

     sqlite3 *db;
     char *errmsg;

     if(sqlite3_open(sqlite_name,&db)!=SQLITE_OK)//打开 sqlite3  不等于SQLITE_OK 就是失败
     {
          printf("%s\n",sqlite3_errmsg(db));
            exit(1);
     }
     else//否则就是成功
     {
        printf("sqlite3_open is success\n");
     }


     if(sqlite3_exec(db,"create table stu(id Integer,name char,score Integer);",NULL,NULL,&errmsg)!=SQLITE_OK)//创建 sqlite3  不等于SQLITE_OK 就是失败
     {
            printf("%s\n",sqlite3_errmsg(db));
             exit(1);

     }
     else//否则就是成功
     {
     {
        printf("sqlite3_exec is success\n");
     }

     while(1)
     {
         int com;
       printf("*******************\n");
       printf("1:inster 2:query 3:update 4:delete\n");
      
         scanf("%d",&id);
         getchar();

         switch(com)
         {
             case 1 :do_insert(db);//插入 成绩 学号 名字 的函数
             
             case 2do_query(db);//查询成绩 学号 名字 的函数
             
             case 3do_update(db);//更新成绩 学号 名字 的函数
             
             case 4do_insert(db);//删除成绩 学号 名字 的函数
            
             break;

 
         }

     }

   return 0;

 }

在这里插入图片描述

五 查询函数

老是去数据库查 很麻烦 直接写一个 

在这里插入图片描述

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

#define sqlite_name "student.db"

 int do_insert(sqlite3 *db)//插入 成绩 学号 名字 的函数
 {

     int id;
     char name[32]={};
     int score;
     char sql[128]={};

     printf("id:");
     scanf("%d",&id);//输入学号
     getchar();

     printf("name:");
     scanf("%s",name);//输入名字
     getchar();

     printf("score:");
     scanf("%d",&score);//输入成绩
     getchar();

    sprintf(sql,"insert into stu values(%d,'%s',%d);",id,name,score);//学号成绩名字存  放在一个地址

    if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
    {
       printf("%s\n",errmsg);
       exit(1);
    }
    else//成功 打印信息
    {
       printf("stu is success\n");
    }

      return 0;
 }
 
int do_update(sqlite3 *db)
{
      int id;
     char name[32]={};
     char sql[128]={};
     char *errmsg;
     
     printf("after update id:");
     scanf(%d”,&id);
     getchar();
     
     printf("after update name :");
     scanf(%s”,name);
     getchar();
     
     printf("after update score:");
     scanf(%d”,&id);
     getchar();
     
    sprintf(sql,"update stu set name='%s',score=%d where id=%d",name,score,id);
     
   if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
    {
       printf("%s\n",errmsg);
       exit(1);
    }
    else//成功 打印信息
    {
       printf("update is success\n");
    }   

  reurn 0;
} 

int do_delete( sqlite3 *db)
{
      int id;
     char sql[128]={};
     char *errmsg;
     
     printf("delete id:");
     scanf(%d”,&id);
     getchar();
     
    sprintf(sql,"delete from stu where id=%d",id);
     
   if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
    {
       printf("%s\n",errmsg);
       exit(1);
    }
    else//成功 打印信息
    {
       printf("delete is success\n");
    }      
     
}

int callback(void *para,int_f_num,char **argv,char **f_name)
{
  int i;
  for(i=0;i<f_num;i++)
  {
    printf(" %s ",argv[i]);//指针数组 每个地址就是一个元素
  }
  
   
   return 0;
} 
 int do_query(sqlite3 *db)
{
     char sql[128]={};
     char *errmsg;
      
     sprintf(sql,"select *from stu");
       
  if(sqlite3_exec(db,sql,callback,NULL,&errmsg)!=SQLITE_OK)//输出函数 异常判断
    {
       printf("%s\n",errmsg);
       exit(1);
    }
    else//成功 打印信息
    {
       printf("select is success\n");
    } 
     return 0;
}


 int  main()
 {

     sqlite3 *db;
     char *errmsg;

     if(sqlite3_open(sqlite_name,&db)!=SQLITE_OK)//打开 sqlite3  不等于SQLITE_OK 就是失败
     {
          printf("%s\n",sqlite3_errmsg(db));
            exit(1);
     }
     else//否则就是成功
     {
        printf("sqlite3_open is success\n");
     }


     if(sqlite3_exec(db,"create table stu(id Integer,name char,score Integer);",NULL,NULL,&errmsg)!=SQLITE_OK)//创建 sqlite3  不等于SQLITE_OK 就是失败
     {
            printf("%s\n",sqlite3_errmsg(db));
             exit(1);

     }
     else//否则就是成功
     {
     {
        printf("sqlite3_exec is success\n");
     }

     while(1)
     {
         int com;
       printf("*******************\n");
       printf("1:inster 2:query 3:update 4:delete\n");
      
         scanf("%d",&id);
         getchar();

         switch(com)
         {
             case 1 :do_insert(db);//插入 成绩 学号 名字 的函数
             
             case 2do_query(db);//查询成绩 学号 名字 的函数
             
             case 3do_update(db);//更新成绩 学号 名字 的函数
             
             case 4do_insert(db);//删除成绩 学号 名字 的函数
            
             break;

 
         }

     }

   return 0;

 }

在这里插入图片描述
总结

1 先把想实现的数据存入sprintf 再存放到sqlite3_exec函数 
2 sqlite3_exec 是起到校准的作用  
校准正确就可以正常操作
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值