网络编程作业day6

数据库操作的增、删、改完成
 

#include <myhead.h>//查询的回调函数
int callback(void* data,int count,char** argv, char** columnName)
{//count是字段数//argv是字段内容//columnName是字段名称for(int i=0;i<count;i++) {printf("%s=%s\n", columnName[i], argv[i] ? argv[i] : "NULL");}puts("");return 0;
}
int main(int argc, const char *argv[])
{//定义数据库句柄指针sqlite3 *ppfd=NULL;//打开一个数据库,如果不存在则创建并打开if(sqlite3_open("./my.db",&ppfd)!=SQLITE_OK){printf("sqlite3_open error,errcode\n");return -1;}puts("数据库打开成功");//创建数据表//1、准备sql1语句char sql1[128]="create table if not exists worker(id int,name char,salary double)";char *errmsg=NULL;    //存放执行SQL语句中的错误信息if(sqlite3_exec(ppfd,sql1,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}puts("员工信息表创建成功");int number;           //操作码while(1){system("clear");    //清空之前的终端信息printf("\t\t=======XXX公司员工管理系统=======\n");printf("\t\t======1、添加员工信息=========\n");printf("\t\t======2、删除员工信息=========\n");printf("\t\t======3、修改员工信息=========\n");printf("\t\t======4、查询员工信息=========\n");printf("\t\t======0、退出=========\n");printf("请输入操作码:");          scanf("%d", &number);getchar();                          switch(number){case 1:    //添加员工信息{//定义修改数据表中的数据容器char id[128]; //id	char name[128];      //namechar salary[128];   //salaryprintf("请输入数据:");scanf("%s %s %s",id,name,salary);//准备sql2语句char sql2[128];sprintf(sql2,"insert into worker values (%s,'%s',%s)",id,name,salary);char *errmsg=NULL;    //存放执行SQL语句中的错误信息if(sqlite3_exec(ppfd,sql2,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}}break;case 2:      //删除员工信息{char rbuf[128];   //字段名char sbuf[128];   //数据printf("请输入字段名和数据:");scanf("%s %s",rbuf,sbuf);//准备sql3语句char sql3[128];sprintf(sql3,"delete from worker where %s='%s'",rbuf,sbuf);printf("%s\n",sql3);char *errmsg=NULL;    //存放执行SQL语句中的错误信息if(sqlite3_exec(ppfd,sql3,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}}break;case 3:    //修改员工信息{char rbuf[128];   //字段名char sbuf[128];   //数据char buf1[128];   //限制条件字段名char buf2[128];   //限制条件数据printf("请输入限制条件字段名和数据:");scanf(" %s %s",buf1,buf2);printf("修改的字段名和数据:");scanf(" %s %s",rbuf,sbuf);//准备sql4语句char sql4[128];sprintf(sql4,"update worker set %s='%s' where %s='%s'",rbuf,sbuf,buf1,buf2);char *errmsg=NULL;    //存放执行SQL语句中的错误信息if(sqlite3_exec(ppfd,sql4,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}}break;case 4:     //查询员工信息{ char rbuf[128];   //字段名char sbuf[128];   //数据printf("查询的字段名和数据:");scanf(" %s %s",rbuf,sbuf);//准备sql5语句char sql5[128];sprintf(sql5,"select * from worker where %s='%s'",rbuf,sbuf);char *errmsg=NULL;    //存放执行SQL语句中的错误信息if(sqlite3_exec(ppfd,sql5,callback,NULL,&errmsg)!=SQLITE_OK){printf("exec error:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}}break;case 0:goto END;default:printf("您输入的功能有误,请重新输入!!!\n");}printf("请输入任意键,按回车清屏\n");while(getchar()!= '\n');}
END://关闭数据库sqlite3_close(ppfd);return 0;
}

 

sqlite_exec函数作业演示视频

思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/270794.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLO-World:实时开放词汇目标检测

摘要 Open Vocabulary&#xff1a;开放词汇 论文链接&#xff1a;https://arxiv.org/pdf/2401.17270.pdf You Only Look Once (YOLO) 系列检测器已经确立了自己作为高效和实用工具的地位。然而&#xff0c;它们对预定义和训练过的对象类别的依赖限制了它们在开放场景中的适用…

MYSQL使用mysqldump备份、复原数据库

参考 添加链接描述 1. 备份数据库 C:\Windows\system32>mysqldump -uroot -p test student>C:\student.sql Enter password: ****2. 备份多个数据库 mysqldump -u root -p --databases test mysql>C:\testandmysql.sql3. 备份所有数据库 mysqldump -u root -p -…

Java+SpringBoot+Vue+MySQL:农业管理新篇章

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

SICP解读指南:深度阅读 “计算机领域三巨头” 之一(文末送书)

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 书籍介绍1.1 SICP侧重点1.2 SICP章节介绍 二. 书籍推荐2.1 书籍介绍2.2 推…

打家劫舍(java版)

&#x1f4d1;前言 本文主要是【动态规划】——打家劫舍(java版)的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一…

YTM32同步串行通信引擎SPI外设详解(slave part)

YTM32同步串行通信引擎SPI外设详解&#xff08;slave part&#xff09; 文章目录 YTM32同步串行通信引擎SPI外设详解&#xff08;slave part&#xff09;IntroductionPricinple & Mechinism引脚信号Slave从机工作模式发送/命令FIFO和接收FIFOMatch匹配接收功能硬件片选和内…

100 spring-security 中 /oauth/token 发送请求不携带参数 报错 “401 Unauthorized“

前言 最近存在这样的一个问题, 大致的复现方式是 访问 /oauth/token 接口, 然后不携带任何参数, 结果 服务器抛出了一个 "401 Unauthorized" 针对这个 401, 这里 梳理一下这个流程, 也会衍生出一些其他的问题 测试用例 客户端这边大致的情况是 构造参数, 然后发…

excel中去除公式,仅保留值

1.单个单元格去除公式 双击单元格&#xff0c;按F9. 2.批量去除公式 选中列然后复制&#xff0c;选择性粘贴&#xff0c;选值粘贴

【每日一题】1976. 到达目的地的方案数-2024.3.5

题目: 1976. 到达目的地的方案数 你在一个城市里,城市由 n 个路口组成,路口编号为 0 到 n - 1 ,某些路口之间有 双向 道路。输入保证你可以从任意路口出发到达其他任意路口,且任意两个路口之间最多有一条路。 给你一个整数 n 和二维整数数组 roads ,其中 roads[i] = […

PCL官方demo的编译使用教程

写在前面 本文内容 PCL官方demo的编译使用教程&#xff1b; 后续对PCL demo中比较常用的算法、应用demo会出专门的博客讲解、拓展&#xff1b; 更多点云基础、算法相关内容请关注专栏&#xff1a; 点云处理基础 点云配准(PointCloud Registration) Open3D点云处理 PCL点云处理 …

青少年如何从零开始学习Python编程?有它就够了!

文章目录 写在前面青少年为什么要学习编程 推荐图书图书特色内容简介 推荐理由粉丝福利写在最后 写在前面 本期博主给大家带来一本非常适合青少年学习编程的图书&#xff0c;快来看看吧~ 青少年为什么要学习编程 青少年学习编程&#xff0c;就好比在他们年轻时就开始掌握一种…

Vulnhub靶机:Bellatrix

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.4&#xff09; 靶机&#xff1a;Bellatrix&#xff08;10.0.2.9&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/hogwa…

Sy2 Linux系统登录及用户管理

实验环境&#xff1a; 宿主机为win11 Vmware workstaion 17 目标机的OS&#xff1a; Ubuntu 2004 网络&#xff1a;NAT 获取地址&#xff1a;192.168.248.131/24 DNS,DHCP&#xff1a;192.168.248.2 第一章ppt的命令操作&#xff08;部分&#xff09; S1、执行whoami、who…

极狐GitLab 如何设置 Markdown 中的图片大小

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 使用极狐GitLab 进行代码托管或者 CI/CD&#xff0c;都避免不了…

Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?

文章目录 Object.defineProperty小结 proxy总结有需要的请私信博主&#xff0c;还请麻烦给个关注&#xff0c;博主不定期更新&#xff0c;或许能够有所帮助&#xff01;&#xff01;请关注公众号 Object.defineProperty 定义&#xff1a;Object.defineProperty() 方法会直接在一…

docker部署aria2-pro

前言 我平时有一些下载视频和一些资源文件的需求&#xff0c;有时候需要离线下载&#xff0c;也要速度比较快的方式 之前我是用家里的玩客云绝育之后不再写盘当下载机用的&#xff0c;但是限制很多 我发现了aria2 这个下载器非常适合我&#xff0c;而有个大佬又在原来的基础…

php常见的45个漏洞及解决方案

[TOC]&#xff08;太多了&#xff0c;目录只列出最重要的几个&#xff0c;剩下的同学们自己翻&#xff09; PHP作为一种广泛应用的服务器端脚本语言&#xff0c;在历史上曾曝出过多种安全漏洞。以下是一些PHP漏洞的类别及其简要解释&#xff0c;以及如何解决这些问题&#xff1…

一次一对一服务引起的沉思和笑话(微信号Stefan)

前情提要 客户需求&#xff1a; 分析页面代码和接口请求协议和参数需求&#xff0c;将人工下载视频怎么获得最终的视频链接&#xff0c;这一逻辑清晰的展示并讲解清除。我询问了是否需要成品爬虫&#xff0c;他说代码他自己能搞定。 我给的价格选择&#xff1a; 第一种、首…

flowable的java class task,也叫服务任务

源码地址12级程序猿-新年正当红/flowable-ui和服务任务 启动flowable-ui-app 浏览器输入下面的地址 http://localhost:8080/flowable-ui/#/ 在服务任务这里设置java类的路径 com.dmg.flowabledemo.task.MyServiceTask 当请假任务完成之后&#xff0c;自动触发这个服务任务…

Java精品项目--第5期基于SpringBoot的高速收费系统的设计分析与实现

项目使用技术栈 SpringBootMavenShiroMySQLMybatis-PlusJavaJDK1.8HTML 系统介绍 项目截图