网络编程(3/6)

使用C语言完成数据库的增删改
#include<myhead.h>
int do_add(sqlite3 *ppDb)
{int numb;char name[50];int salary;printf("请输入员工信息:工号、姓名、薪水\n");scanf("%d %s %d",&numb,name,&salary);char sql[128];char *errmsg=NULL;sprintf(sql,"INSERT INTO Worker values(%d,'%s',%d)",numb,name,salary);if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error : %s\n", errmsg);sqlite3_free(errmsg); errmsg = NULL;return -1;}printf("员工信息加入成功\n");return 0;
}
int do_delete(sqlite3 *ppDb)
{char buf[128];printf("请输入要删除的员工工号:");fgets(buf,sizeof(buf),stdin);char sql[128]="DELETE form Worker where numb=";strcat(sql,buf);char *errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error : %s\n", errmsg);sqlite3_free(errmsg); errmsg = NULL;return -1;}printf("删除成功\n");return 0;
}
int do_update(sqlite3 *ppDb)
{int salary,numb;printf("请输入要更改薪资的员工的员工号:");scanf("%d",&numb);printf("请输入所要更改后的薪水:");scanf("%d",&salary);char sql[128];sprintf(sql,"update Worker set salary=%d where numb=%d",salary,numb);char *errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error : %s\n", errmsg);sqlite3_free(errmsg); errmsg = NULL;return -1;}printf("更新成功\n");return 0;}
int main(int argc, const char *argv[])
{//定义数据库句柄指针sqlite3 * ppDb = NULL;//打开数据库,如果数据库不存在,则创建数据库//将数据库句柄由参数2返回if(sqlite3_open("./my.db", &ppDb) != SQLITE_OK){printf("sqlite3_open error,errcode=%d, errmsg = %s\n",\sqlite3_errcode(ppDb), sqlite3_errmsg(ppDb));return -1;}printf("sqlite3_open success\n");//创建数据表//1、准备sql语句char sql[128] = "create table if not exists Worker(numb int, name char, salary double)";char *errmsg = NULL; //存放执行sql语句口的错误信息if(sqlite3_exec(ppDb, sql, NULL, NULL, &errmsg) != SQLITE_OK){printf("exec error : %s\n", errmsg);sqlite3_free(errmsg); //防止内存泄露errmsg = NULL;return -1;}printf("员工信息表创建成功\n");int menu = -1; //菜单选项for(;;){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", &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:goto END;default:printf("您输入的功能有误,请重新输入!!!\n");}printf("请输入任意键,按回车清屏\n");while(getchar() != '\n');}END://关闭数据库sqlite3_close(ppDb);return 0;
}
相关文章:
网络编程(3/6)
使用C语言完成数据库的增删改 #include<myhead.h> int do_add(sqlite3 *ppDb) {int numb;char name[50];int salary;printf("请输入员工信息:工号、姓名、薪水\n");scanf("%d %s %d",&numb,name,&salary);char sql[128];char *e…...
(day 2)JavaScript学习笔记(基础之变量、常量和注释)
概述 这是我的学习笔记,记录了JavaScript的学习过程,我是有一些Python基础的,因此在学习的过程中不自觉的把JavaScript的代码跟Python代码做对比,以便加深印象。我本人学习软件开发纯属个人兴趣,大学所学的专业也非软件…...
Spring Boot中全局异常处理器
文章目录 1.Spring Boot中两种异常处理方式2.为什么需要全局异常处理呢?3. 全局异常处理器测试4.ControllerAdvice 详解5.ExceptionHandler 详解 1.Spring Boot中两种异常处理方式 要想解决测试中存在的问题,我们需要对程序中可能出现的异常进行捕获&am…...
【JAVA重要知识 | 第七篇】Java异常知识总结(声明、抛出、捕获异常)
7.Java异常知识总结(声明、抛出、捕获异常) 7.1异常定义 在程序运行过程中,如果JVM检测出一个不可能执行的操作时,就会出现运行时错误(runtime error)。在Java中,运行时错误会作为异常抛出。异…...
SSM整合项目(Vue3环境搭建)
SSM整合项目(Vue3环境搭建) 1.下载node.js 1.卸载原来的node.js 2.检测是否卸载成功 3.下载node.js(10.16.3) 一路next就可以 4.检测是否安装成功 2.全局安装Vue插件cli 命令行输入 npm install -g vue/cli 3.新建Vue项目 1.…...
Golang 方法的接收器 receiver 指针和值的区别
一、如果receiver是指针类型 package mainimport "fmt"type Count struct {count int }func main() {c : Count{count: 0}c.incr()fmt.Println(c.count)c2 : &cc2.incr()fmt.Println(c2.count) }func (c *Count) incr() {c.count }//打印结果 1 2 incr 方法的 …...
【蓝桥杯】节省时间
一、对于string类型变量的连接,可以直接用“”或者“”来进行字符串的直接连接 string a"1"; string b"2"; string c; cab"12"; string操作符两边既可以都是string类型,也可是string与char类型 注意: (1)“”…...
矩阵乘法--Strassen算法
一、矩阵乘法 从中可以看出,计算两个矩阵的乘积,需要三个 for 循环,可以简单写出代码: for(int i1;i<m;i)for(int j1;j<p;j)for(int k1;k<n;k)c[i][j]a[i][k]*b[k][j]; 时间复杂度的分析:很明显,…...
Unity笔记:C#基础(1)
杂项 虚函数 CSDN - C虚函数详解 cnblog - C#中的虚函数virtual 常量池与new 在C#中,string是不可变的,这意味着对string对象的操作通常会返回一个新的string对象,而不会修改原始的string对象。因此,几乎所有涉及更改string内…...
计算机科技与心理学的紧密交织:一场跨学科的深度对话
随着信息技术的飞速发展,计算机科学与心理学这两门看似迥异的学科日益呈现出密不可分的关系。本文将深入探讨计算机科学与心理学之间的相互影响和融合,揭示二者在研究方法、应用实践以及对未来社会发展的影响等方面的高度关联性。 计算机科学为心理学研究…...
【JAVA类】利用接口的多继承实现———图书管理系统【附源码】
引言 在我们学习了一些java的基础语法之后,需要把这些知识点可以串起来,这里使用一个简单的小项目可以很好的帮助我们牢记这些知识点,今天就带大家学习一个有关java的小项目,很多学校也经常把这个项目作为他们的课程设计——经典的…...
Linux进程概念僵尸进程孤儿进程
文章目录 一、什么是进程二、进程的状态三、Linux是如何做的?3.1 R状态3.2 S状态3.3 D状态3.4 T状态3.5 t状态3.6 X状态3.7 Z状态 四、僵尸进程4.1 僵尸进程危害 五、孤儿进程 一、什么是进程 对于进程理解来说,在Windows上是也可以观察到的,…...
实体店如何引流成交裂变?打造流量新引擎的秘诀
在数字化浪潮席卷的今天,实体店经营面临着前所未有的挑战与机遇。社区店作为连接居民日常生活的桥梁,如何在激烈的市场竞争中脱颖而出,实现引流、成交与裂变,成为摆在每一位实体店创业者面前的重要课题。 作为一名鲜奶吧开店5年的…...
蓝桥杯(日期问题纯暴力)
纯纯暴力,写的想吐,玛德服了。 但是复习了vector去重方法,日期的合法性判断。 #include <iostream> #include <vector> #include <cstring> #include <algorithm>using namespace std; vector<int> res; st…...
ES: ES+Kibana 环境部署
ESKibana 部署 机器信息 10.10.8.62 10.10.8.63 10.10.8.64版本选择:6.8.1 基础环境优化 所有节点 # 关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service# 查看selinux getenforce # 关闭selinux setenforce 0 # 永久关闭se…...
Find My产品越来越得到市场认可,伦茨科技ST17H6x芯片赋能厂家
苹果发布AirTag发布以来,大家都更加注重物品的防丢,苹果的 Find My 就可以查找 iPhone、Mac、AirPods、Apple Watch,如今的Find My已经不单单可以查找苹果的设备,随着第三方设备的加入,将丰富Find My Network的版图。产…...
Linux系统——Haproxy高性能负载均衡软件
目录 一、Haproxy介绍 1.Haproxy定义 2.Haproxy主要特性 二、安装Haproxy 1.yum安装 2.第三方rpm包安装 3.编译安装 3.1解决Lua环境 3.2编译安装Haproxy 三、配置文件详解 1.状态页 2.日志管理 2.1定义日志到其他主机站点 3.指定进程线程个数 4.cpu亲缘性 5.多进…...
Python办公自动化之PDF(二)
Python操作PDF二 1、PyMuPDF简介2、 1、PyMuPDF简介 PyMuPDF(也称Fitz)开源,提供了一整套用于处理PDF文件的综合工具。使用PyMuPDF,用户可以高效地执行打开PDF、提取文本、图像和表格、操作旋转和裁剪等页面属性、创建新PDF文档以…...
登录失败重试次数安全设计方案
1、登录失败重试次数设计方案 1、无论是账号还是密码错误,统一提示:用户名或密码错误,账号剩余登录次数N! 2、同一账号连续登录失败5次,锁定该账号5分钟,5分钟后可以再重试登录。 开发设计 keyÿ…...
Django——模板
Django——模板 Django 提供一种动态生成 HTML 页面 —— 模板 1、模板语言 模板语言(DTL): 变量 , 注释 , 标签 , 过滤器 , 模板继承 1、变量 <body> <!-- 这个是前端中的注释 --> {# 这种是Django中模板语言的…...
2026最权威的十大AI辅助论文方案解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 一篇篇DeepSeek系列论文,呈现出大型语言模型架构以及训练方法方面的系统性创新&a…...
Yosys内部数据结构与优化流程深度解析
1. Yosys工具与RTLIL数据结构概述 Yosys作为开源硬件综合工具链的核心组件,其内部实现了一套名为RTLIL(Register Transfer Level Intermediate Language)的中间表示语言。这套数据结构的设计直接决定了工具的性能上限和优化潜力。我第一次接触…...
老化OCA气泡异常分析
■问题描述整机包装堆码测试:1>模拟运输堆码测试(4层),负重300kg,常温测试48H后出现气泡不良;2>模拟运输堆码测试(3层),负重225公斤,常温测试48H后无气…...
AI 全域营销技术体系迎来全新迭代 重构数智时代企业增长主要
多智能体协同技术实现全链路突破 开启企业营销数智化转型新纪元随着生成式人工智能技术的深度产业化落地,全球商业生态的数字化进程迎来了根本性变革。用户注意力的全域分散、信息获取渠道的碎片化、消费决策链路的全场景延伸,使得传统营销模式面临渠道割…...
Python的__complex__方法支持复数运算优化与特殊值处理在边缘情况
Python作为一门功能强大的编程语言,其内置的复数运算支持为科学计算和工程应用提供了便利。其中,__complex__方法作为对象转换为复数的关键接口,不仅优化了复数运算的效率,还能处理特殊值在边缘情况的表现。本文将深入探讨这一方法…...
Pixel Epic · Wisdom Terminal 计算机视觉应用:YOLOv5目标检测模型协同优化案例
Pixel Epic Wisdom Terminal 计算机视觉应用:YOLOv5目标检测模型协同优化案例 1. 当大语言模型遇见计算机视觉 在安防监控室里,值班人员正盯着十几个屏幕,突然发现一个可疑身影。"把第三摄像头画面放大,看看那个人手里拿的…...
OpenMV+STM32串口通信避坑指南:从数据打包到LCD显示的完整流程(附源码)
OpenMV与STM32串口通信实战:从数据帧设计到LCD显示的避坑全攻略 引言 当你第一次尝试将OpenMV的识别结果通过串口传输到STM32并在LCD上显示时,大概率会遇到数据丢包、解析错误或显示异常等问题。这不是你的代码写得不够好,而是串口通信本身就…...
Linux内核中的热插拔详解
Linux内核中的热插拔详解 引言 热插拔(Hotplug)是Linux内核中的一项重要功能,它允许在系统运行时动态添加或移除硬件设备,无需重启系统。热插拔技术大大提高了系统的灵活性和可用性,广泛应用于服务器、工作站和嵌入式系…...
PHP反序列化实战:从CVE-2016-7124到fast-destruct,手把手教你绕过__wakeup的几种骚操作
PHP反序列化漏洞实战:深入剖析__wakeup绕过技术 在CTF竞赛和渗透测试中,PHP反序列化漏洞一直是高频考点。本文将带你从底层机制出发,通过实战案例深入理解如何绕过__wakeup魔术方法的限制。不同于简单的技巧罗列,我们会从PHP垃圾回…...
论文写作指南#2:如何高效撰写Implementation details中的硬件配置与超参数设置?
1. 硬件配置的黄金描述法则 第一次写论文Implementation details部分时,我盯着"硬件配置"四个字发了半小时呆——到底该写多细?显卡型号要精确到哪个级别?内存容量写总量还是可用量?后来审稿人的反馈让我恍然大悟&#…...
