当前位置: 首页 > news >正文

网络编程-day6

#include <head.h>/*
//回调函数
int call(void *arg, int cols, char **msgtext, char **msgheader)
{
for(int i=0; i<cols; i++)
{
if(*(char *)arg==*(msgtext+i))
{
printf("遍历完成未找到该id\n");
return -1;
}
printf("有该id可以操作\n");}
}//判断是否存在
int search(sqlite3 *ppDb,int id)
{char *sql = "select id from stuinfo";char *errmsg = NULL;
int flag = 0;
if(sqlite3_exec(ppDb, sql,call,&id, &errmsg) != SQLITE_OK)
{
printf("查询失败:%s\n", errmsg);
sqlite3_free(errmsg);
errmsg = NULL;
return -1;
}printf("查询成功\n");
return 0;
}
*/
//增
int do_add(sqlite3 * ppDb)
{int add_id;   //要添加的学号char add_name[20];  //要添加的姓名double add_socre;    //要添加的成绩printf("输入学号:");scanf("%d",&add_id);printf("请输入姓名:");scanf("%s",add_name);printf("请输入成绩:");scanf("%lf",&add_socre);getchar();//准备sql语句来添加char  sql[128]="";sprintf(sql,"insert into stuinfo values(%d,\"%s\",%.2lf);",add_id,add_name,add_socre);//定义一个指针来接收错误char * errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("添加失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}if(sqlite3_changes(ppDb)!=0){printf("添加成功\n");}return 0;
}//删
int do_delete(sqlite3 *ppDb)
{int delete_id;printf("请输入要删除的id号:");scanf("%d",&delete_id);getchar();//	search(ppDb,delete_id);//准备一个sql语句来删除char sql[128]="";sprintf(sql,"delete from stuinfo where id=%d;",delete_id);//定义一个指针来接收错误char * errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("删除失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}printf("删除成功\n");return 0;}//改
int do_update(sqlite3 * ppDb)
{int update_id;char update_name[20];  //要修改的姓名double update_socre;    //要修改的成绩printf("请输入ID:");scanf("%d",&update_id);printf("请输入新姓名:");scanf("%s",update_name);printf("请输入新成绩:");scanf("%lf",&update_socre);getchar();//	search(ppDb,update_id);//定义一个sql语句用来修改char sql[128]="";sprintf(sql,"update stuinfo set name=\"%s\",socre=%.2lf where id=%d;",update_name,update_socre,update_id);//定义一个指针来接收错误char * errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("修改失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}printf("修改成功\n");return 0;}//自定义查询函数的回调函数
int callback(void *arg, int cols, char **msgtext, char **msgheader)
{if( *(int *)arg ==0){//先输出表头for(int i=0; i<cols; i++){printf("%s\t", msgheader[i]);}printf("\n");*(int *)arg = 1;}//输出内容for(int i=0; i<cols; i++){printf("%s\t", msgtext[i]);}printf("\n");return 0;
}//查
int do_search(sqlite3 *ppDb)
{char *sql = "select * from stuinfo;";char *errmsg = NULL;int flag = 0;if(sqlite3_exec(ppDb, sql, callback, &flag, &errmsg) != SQLITE_OK){printf("查询失败:%s\n", errmsg);sqlite3_free(errmsg);errmsg = NULL;return -1;}printf("查询成功\n");return 0;
}//主函数
int main(int argc, const char *argv[])
{//打开数据库sqlite3 *ppDb=NULL;if(sqlite3_open("./my.db",&ppDb)!=SQLITE_OK){printf("my.db open error\n");return -1;}//准备一个SQL语句用来创建数据表char * sql="CREATE TABLE IF NOT EXISTS stuinfo(id int primary key,name char not null, socre double);";//定义一个指针来接收错误char *errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,& errmsg)!=SQLITE_OK){printf("数据表创建失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg==NULL;return -1;}printf("数据表创建成功\n");int menu=-1;while(1){system("clear");printf("================学生管理系统================\n");printf("===================1、增加==================\n");printf("===================2、删除==================\n");printf("===================3、修改==================\n");printf("===================4、查找==================\n");printf("===================0、退出==================\n");printf("输入编号:");scanf("%d",&menu);getchar();switch (menu){case 1:{do_add(ppDb);}break;case 2:{do_delete(ppDb);}break;case 3:{do_update(ppDb);}break;case 4:{do_search(ppDb);}break;case 0: exit(EXIT_SUCCESS);default :printf("编号输入错误,请重新输入\n");}printf("按任意键后,按回车键清屏\n");while(getchar()!='\n');}//关闭数据库sqlite3_close(ppDb);return 0;
}


文章转载自:

http://IoElR4Lb.bnzjx.cn
http://dS2hwqc8.bnzjx.cn
http://aCdh8wQR.bnzjx.cn
http://HOO60Tqc.bnzjx.cn
http://9berBfcr.bnzjx.cn
http://XoBU8xpH.bnzjx.cn
http://rIuC3kOm.bnzjx.cn
http://llOVCitM.bnzjx.cn
http://TBep8cYw.bnzjx.cn
http://W0QPZ6MI.bnzjx.cn
http://si6BA8fJ.bnzjx.cn
http://TenUTj7X.bnzjx.cn
http://7WtTdB1Y.bnzjx.cn
http://N3NukH1I.bnzjx.cn
http://5spojB3R.bnzjx.cn
http://NKNSowl0.bnzjx.cn
http://IsBS3dgM.bnzjx.cn
http://M6ag0pqI.bnzjx.cn
http://hrEy9DWu.bnzjx.cn
http://9Js2wKad.bnzjx.cn
http://erxakwjI.bnzjx.cn
http://IS9IQjnX.bnzjx.cn
http://HPN8dQQN.bnzjx.cn
http://YU5Civv5.bnzjx.cn
http://QvrHufX1.bnzjx.cn
http://ettiYXhW.bnzjx.cn
http://SD0g47T2.bnzjx.cn
http://UeeQtr12.bnzjx.cn
http://icYMqiug.bnzjx.cn
http://nXsmw7Yl.bnzjx.cn
http://www.dtcms.com/a/384655.html

相关文章:

  • 【04】AI辅助编程完整的安卓二次商业实战-寻找修改替换新UI首页图标-菜单图标-消息列表图标-优雅草伊凡
  • 《格式工厂FormatFactory》 [5.21.0][便携版] 下载
  • 【ubuntu24.04】安装rust
  • vue-sync修饰符解析以及切换iframe页面进行保存提示功能的思路
  • 005 Rust变量与常量
  • DOM---操作元素样式属性详解
  • Excel简单教程
  • Node.js 项目依赖包管理
  • LabVIEW命令行使用方法
  • 单变量单步时序预测 | TCN-LSTM时间卷积结合长短期记忆神经网络(MATLAB)
  • ESLint 自定义 Processor(处理器)
  • MySQL 极致性能优化指南——从 INSERT 到 UPDATE 的七大战场
  • Web前端开发工具有哪些?常用Web前端开发工具推荐、Web前端开发工具对比
  • 一款开源的im简介
  • Vite Plugin PWA – 零配置构建现代渐进式Web应用
  • 用爬虫技术获取淘宝商品评论——提升购物体验的利器
  • 【新手指南】async/await与Axios的用法
  • Java的并发编程1
  • 使用prometheus operator监控部署在k8s集群外的mysql实例
  • Notepad++ 8.7 64位安装教程(附安装包)​
  • 《大数据之路1》笔记3:数据管理
  • 【代码随想录day 27】 力扣 376. 摆动序列
  • 使用conda导出虚拟环境
  • LeetCode热题100--105. 从前序与中序遍历序列构造二叉树--中等
  • 计算机网络---数据链路层上
  • 《FastAPI零基础入门与进阶实战》第18篇:Token验证改善--CRUD中应用
  • QT(4)
  • DevOps历程--Drone安装使用详细教程
  • 微信小程序选择图片、视频、音频
  • 【C++上岸】C++常见面试题目--网络篇(第二十三期)