2025.1.2
练习:
1> 创建一个工人信息库,包含工号(主键)、姓名、年龄、薪资。
2> 添加三条工人信息(可以完整信息,也可以非完整信息)
3> 修改某一个工人的薪资(确定的一个)
4> 展示出工资在10000到20000之间的所有工人信息
5> 删除掉指定姓名工人的信息
6> 删除工人信息库
#include<myhead.h>
#include<sqlite3.h>sqlite3 * creat_sqlite() //创建数据库并返回数据库句柄
{const char *p = "./my.db";sqlite3 *ppDb;if(sqlite3_open(p,&ppDb)!=SQLITE_OK) //调用数据库提供的第三方库函数{printf("打开数据库失败\n");printf("%s\n",sqlite3_errmsg(ppDb)); //错误信息printf("%d\n",sqlite3_errcode(ppDb)); //错误码printf("sqlite3_open");}return ppDb; //返回数据库句柄
}
void insert_worker(sqlite3 *ppDb) //插入员工信息
{char sql[1024];char *errmsg; //存储错误信息的指针sprintf(sql,"%s","create table worker(num int primary key,name char,age int,salary int);");if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("%s\n",sqlite3_errmsg(ppDb)); //错误信息printf("%d\n",sqlite3_errcode(ppDb)); //错误码}printf("创建表格成功\n");int num;char name[100];int age;int salary;printf("请输入你要添加的工人信息:\n");scanf("%d %s %d %d",&num,name,&age,&salary);getchar();snprintf(sql,sizeof(sql),"insert into worker values(%d,\"%s\",%d,%d);",num,name,age,salary);if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("%s\n",sqlite3_errmsg(ppDb)); //错误信息printf("%d\n",sqlite3_errcode(ppDb)); //错误码}printf("添加成功\n");}void update_worker(sqlite3 *ppDb)
{int num;int salary;char * errmsg;char sql[1024];printf("请输入你要修改的工人的工号:\n");scanf("%d",&num);getchar();printf("请你输入改的值:\n");scanf("%d",&salary);getchar();snprintf(sql,sizeof(sql),"update worker set salary=%d where num=%d",salary,num);if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("%s\n",sqlite3_errmsg(ppDb));printf("%d\n",sqlite3_errcode(ppDb));}printf("修改成功\n");
}
void show(sqlite3 *ppDb)
{char sql[1024];char * errmsg;int salary;const char *sq = "select * from worker where salary>10000 and salary<20000";sqlite3_stmt *stmt;snprintf(sql,sizeof(sql),"select * from worker where salary>10000 and salary<20000");if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("%s\n",sqlite3_errmsg(ppDb));printf("%d\n",sqlite3_errcode(ppDb));}int res = sqlite3_prepare_v2(ppDb,sq,-1,&stmt,NULL);printf("工资在10000到20000的工人:\n");while((res = sqlite3_step(stmt))==SQLITE_ROW){printf("num = %d,name = %s,age = %d,salary = %d\n",sqlite3_column_int(stmt,0),sqlite3_column_text(stmt,1),sqlite3_column_int(stmt,2),sqlite3_column_int(stmt,3));}sqlite3_finalize(stmt);
}
void delete_worker(sqlite3 *ppDb)
{char name[20];char * errmsg;char sql[1024];printf("请输入你要删除的工人的姓名:\n");scanf("%s",name);getchar();snprintf(sql,sizeof(sql),"delete from worker where name = '%s' ",name);if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("%s\n",sqlite3_errmsg(ppDb));printf("%d\n",sqlite3_errcode(ppDb));}printf("删除成功\n");
}
void delete(sqlite3 *ppDb)
{char name[20];char * errmsg;char sql[1024];snprintf(sql,sizeof(sql),"drop table worker ");if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("%s\n",sqlite3_errmsg(ppDb));printf("%d\n",sqlite3_errcode(ppDb));}printf("删除成功\n");
}
void menu()
{int ch;sqlite3 *ppDb;while(1){printf("\t\t\t1、创建数据库\n");printf("\t\t\t2、添加工人信息\n");printf("\t\t\t3、修改工人信息\n");printf("\t\t\t4、展示所有信息\n");printf("\t\t\t5、删除指定工人信息\n");printf("\t\t\t6、删除整表\n");printf("\t\t\t0、退出\n");printf("请输入你的选择:");scanf("%d",&ch);getchar();switch(ch){case 1:{ppDb = creat_sqlite();}break;case 2:{insert_worker(ppDb);}break;case 3:{update_worker(ppDb);}break;case 4:{show(ppDb);}break;case 5:{delete_worker(ppDb);}break;case 6:{delete(ppDb);}break;case 0:exit(0);break;default:printf("输入错误,请重新输入\n");}}
}
int main(int argc, const char *argv[])
{menu(); //调用菜单函数 return 0;
}
相关文章:
2025.1.2
练习: 1> 创建一个工人信息库,包含工号(主键)、姓名、年龄、薪资。 2> 添加三条工人信息(可以完整信息,也可以非完整信息) 3> 修改某一个工人的薪资(确定的一个…...

重庆大学软件工程复试怎么准备?
重大软件复试相对来说不算刁钻,关键是对自己的竞赛和项目足够了解,能应对老师的提问。专业课范围广,英文文献看个人水平,难度不算大,整体只要表现得得体从容,以及充分的准备,老师不会为难你。 …...

Ant Design Pro搭建react项目
1、使用pro-cli 来快速的初始化脚手架,先全局安装 npm i ant-design/pro-cli -g pro create myapp 2、选择模板类型 pro 是基础模板,只提供了框架运行的基本内容,complete 包含所有区块,不太适合当基础模板来进行二次开发。&a…...

mysql连接时报错1130-Host ‘hostname‘ is not allowed to connect to this MySQL server
不在mysql服务器上通过ip连接服务提示1130错误怎么回事呢。这个错误是因为在数据库服务器中的mysql数据库中的user的表中没有权限。 解决方案 查询mysql库的user表指定账户的连接方式 SELECT user, host FROM mysql.user;修改指定账户的host连接方式 update mysql.user se…...

办公 三之 Excel 数据限定录入与格式变换
开始-----条件格式------管理规则 IF($A4"永久",1,0) //如果A4包含永久,条件格式如下: OR($D5<60,$E5<60,$F5<60) 求取任意科目不及格数据 AND($D5<60,$E5<60,$F5<60) 若所有科目都不及格 显示为红色 IF($H4<EDATE…...
Ubuntu执行sudo apt-get update失败的解决方法
Ubuntu版本:24.04.1 报错信息: Clearsigned file isnt valid, got NOSPLIT (does the network require authentication?) 如果你在执行以上命令的时候也出现了上面这样的错误提示,先检查一下是不是网络问题,如果确定不是&…...

torch.nn.functional的用法
文章目录 介绍激活函数示例 损失函数示例 卷积操作示例 池化示例 归一化操作示例 Dropout示例 torch.nn.functional 与 torch.nn 的区别 介绍 torch.nn.functional 是 PyTorch 中的一个模块,提供了许多函数式的神经网络操作,包括激活函数、损失函数、卷…...

最新常见的图数据库对比,选型,架构,性能对比
图数据库排名 地址:https://db-engines.com/en/ranking/graphdbms 知识图谱查询语言 SPARQL、Cypher、Gremlin、PGQL 和 G-CORE 语法 / 语义 / 特性 SPARQL Cypher Gremlin PGQL G-CORE 图模式匹配查询 语法 CGP CGP CGP(无可选)1 CGP CGP 语义 子…...

UE5材质节点Camera Vector/Reflection Vector
Camera Vector相机向量,输出像素到相机的方向,结果归一化 会随着相机移动而改变 Reflection Vector 反射向量,物体表面法线反射到相机的方向,x和y和camera vector相反 配合hdr使用...
NextCloud服务安装与配置教程
NextCloud服务安装与配置教程 什么是 NextCloud: Nextcloud 是一款开源的私有云存储和协作平台,允许用户在自己的服务器上托管数据并管理团队协作。它可以作为一个功能丰富、安全可靠的替代方案,与商业云服务(如 Google Drive、Dropbox)相比提供更多控制和隐私保护。简单来…...

详解GPT-信息抽取任务 (GPT-3 FAMILY LARGE LANGUAGE MODELS)
GPT-3 FAMILY LARGE LANGUAGE MODELS Information Extraction 自然语言处理信息提取任务(NLP-IE):从非结构化文本数据中提取结构化数据,例如提取实体、关系和事件 [164]。将非结构化文本数据转换为结构化数据可以实现高效的数据处…...

华为数通考试模拟真题(附带答案解析)题库领取
【多选题】 管理员想要更新华为路由器的VRP版本,则正确的方法有? A管理员把路由器配置为FTP服务器,通过FTP来传输VRP软件 B:管理员把路由器置为FTP客户端,通过FTP来传输VRP软件 C:管理员把路由器配置为TFTP客户端,通过TFTP来传…...

微信小程序:正确输出<小于,大于>符号
错误写法 1、如果直接输入<符号会直接报错,>能正常使用,如图标红的是错误写法 2、输入html的<>的写法,会原样输入符号 解决方法 采用变量的方式输出 1、js写入变量 2、wxml直接写...

Flink源码解析之:如何根据算法生成StreamGraph过程
Flink源码解析之:如何根据算法生成StreamGraph过程 在我们日常编写Flink应用的时候,会首先创建一个StreamExecutionEnvironment.getExecutionEnvironment()对象,在添加一些自定义处理算子后,会调用env.execute来执行定义好的Flin…...
矩阵简单问题(Java)
问题: 顺时针打印二维方阵: 1 2 3 4 15 5 6 7 8 14 9 10 11 12 13 13 14 15 16 public class Test1 {public static void main(String[] args) {int[][] arr new int[][]{{1, 2, 3, 4,100},{5, 6, 7, 8,101},{9, 10, 11, 12,102},{13, 14, 15, 16,…...
Elasticsearch DSL版
文章目录 1.索引库操作创建索引库:删除索引库:查询索引库:修改索引库:总结 2.文档操作创建文档:查询文档:删除文档:全量修改文档:增量修改文档:总结 3.DSL查询语法&#…...

2024-12-29-sklearn学习(26)模型选择与评估-交叉验证:评估估算器的表现 今夜偏知春气暖,虫声新透绿窗纱。
文章目录 sklearn学习(26) 模型选择与评估-交叉验证:评估估算器的表现26.1 计算交叉验证的指标26.1.1 cross_validate 函数和多度量评估26.1.2 通过交叉验证获取预测 26.2 交叉验证迭代器26.2.1 交叉验证迭代器–循环遍历数据26.2.1.1 K 折26.2.1.2 重复 K-折交叉验…...

STM32CUBEIDE FreeRTOS操作教程(十二):std dynamic memory 标准动态内存
STM32CUBEIDE FreeRTOS操作教程(十二):std dynamic memory 标准动态内存 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件,不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F40…...
异步爬虫之aiohttp的使用
在上一篇博客我们介绍了异步爬虫的基本原理和 asyncio 的基本用法,并且在最后简单提及了使用aiohttp 实现网页爬取的过程。本篇博客我们介绍一下 aiohttp 的常见用法。 基本介绍 前面介绍的 asyncio模块,其内部实现了对 TCP、UDP、SSL协议的异步操作&a…...
【Rust自学】9.1. 不可恢复的错误以及panic!
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 9.1.1. Rust错误处理概述 Rust拥有极高的可靠性,这也延伸到了错误处理的领域。比如说在大部分情况下,Rust会迫使你…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...

Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...

GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...