网络编程:数据库实现增删改

news/2024/4/13 12:14:43/文章来源:https://blog.csdn.net/2301_81513928/article/details/136520833

1.数据库实现增删改

程序代码:

  1 #include<myhead.h>2 //定义添加数据函数3 int do_add(sqlite3*ppDb)4 {5     //准备sql语句6     int add_numb;//工号7     char add_name[20];//姓名8     double add_salary;9     printf("请输入要添加的工号:");10     scanf("%d",&add_numb);11     printf("请输入要添加的姓名:");12     scanf("%s",add_name);13     printf("请输入要添加的薪资:");14     scanf("%lf",&add_salary);15     getchar();//吸收回车16     char sql[128]="";17     sprintf(sql,"insert into Worker(numb,name,salary) values(%d , %s , %lf  )",\18             add_numb,add_name,add_salary);19     printf("sql=%s\n",sql);20     //执行sql语句21     char*errmsg=NULL;22     if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)23     {24         printf("sqlite3_exec error:%s\n",errmsg);25         //释放errmsg空间26         sqlite3_free(errmsg);27         errmsg=NULL;28         return -1;29     }30     printf("添加成功\n");31     return 0;32 }33 //定义删除数据函数34 int do_delete(sqlite3*ppDb)35 {36 37 }38 int main(int argc, const char *argv[])39 {40     //定义数据库操作句柄指针41     sqlite3*ppDb=NULL;42     //打开数据库,不存在创建43     //将数据库句柄由参数2返回44     if(sqlite3_open("./my.db",&ppDb)!=SQLITE_OK)45     {46         printf("sqlite3_open error,errcode=%d,errmsg=%s\n",\47                 sqlite3_errcode(ppDb),sqlite3_errmsg(ppDb));48         return -1;49     }50     printf("sqlite3_open success\n");51     //创建数据表52     //准备sql语句53     char sql[128]="create table if not exists Worker(numb int,name char,salary double)";54     char*errmsg=NULL;//存放执行sql语句错误信息55     if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)56     {57         printf("exec error:%s\n",errmsg);58         sqlite3_free(errmsg);//防止内存泄露59         errmsg=NULL;60         return -1;61     }62     printf("员工信息表创建成功\n");63     int menu=-1;//菜单选项64     while(1)65     {66         system("clear");//清空之前终端信息67         printf("\t\t=====公司员工管理系统=====\n");68         printf("\t\t=====1.添加员工信息=====\n");69         printf("\t\t=====2.删除员工信息=====\n");70         printf("\t\t=====3.修改员工信息=====\n");71         printf("\t\t=====4.查询员工信息=====\n");72         printf("\t\t=====0.退出系统=====\n");73 74         printf("请输入操作码:");//提示并输入信息75         scanf("%d",&menu);76         getchar();//吸收回车77         switch(menu)78         {79         case 1:80             {81                 do_add(ppDb);82             }83             break;84         case 2:85             {86                 //  do_delete(ppDb);87             }88             break;89         case 3:90             {91                 //  do_update(ppDb);92             }93             break;94         case 4:95             {96                 //  do_search(ppDb);97             }98             break;99         case 0:
100             goto END;
101         default:printf("输入功能有误,请重新输入!!!\n");
102         }
103         printf("任意键回车清屏\n");
104         while(getchar()!='\n');
105     }
106 END:
107     //关闭数据库
108     sqlite3_close(ppDb);
109     return 0;
110 }                                                                                                                                                                                                                                                                                                                                                                                                                    
~                               

运行结果:

流程图

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

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

相关文章

【C++】priority_queue和仿函数

priority_queue翻译过来就是优先队列&#xff0c;其实就是我们数据结构中的堆。堆这个东西之前也说过&#xff0c;它分为大根堆和小根堆&#xff0c;它的底层是一个类似数组的连续的空间&#xff0c;逻辑结构是一个完全二叉树&#xff0c;这个完全二叉树如果是小根堆的话父亲小…

数字孪生10个技术栈:数据采集的八种方式

大家好&#xff0c;我是贝格前端工场&#xff0c;上期讲了数字孪生10个技术栈&#xff08;总括&#xff09;:概念扫盲和总体介绍&#xff0c;获得了大家的热捧&#xff0c;本期继续分享技术栈&#xff0c;大家如有数字孪生或者数据可视化的需求&#xff0c;可以联络我们。 一、…

20240307-2-前端开发校招面试问题整理HTML

前端开发校招面试问题整理【2】——HTML 1、HTML 元素&#xff08;element&#xff09; Q&#xff1a;简单介绍下常用的 HTML 元素&#xff1f; 块状标签&#xff1a;元素独占一行&#xff0c;可指定宽、高。 常用的块状元素有&#xff1a; <div>、<p>、<h1&…

MySQL 备份方案

优质博文&#xff1a;IT-BLOG-CN 一、为什么要备份 【1】容灾恢复&#xff1a;硬件故障、不经意的 Bug 导致数据损坏&#xff0c;或者服务器及其数据由于某些原因不可获取或无法使用等&#xff08;例如&#xff1a;机房大楼烧毁&#xff0c;恶意的黑客攻击或 Mysql 的 Bug 等&…

Leetcode : 147. 对链表进行插入排序

给定单个链表的头 head &#xff0c;使用 插入排序 对链表进行排序&#xff0c;并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的&#xff0c;每次只移动一个元素&#xff0c;直到所有元素可以形成一个有序的输出列表。 每次迭代中&#xff0c;插入排序只从输…

Java多线程——wait和notify方法作用,线程的状态

目录 引出wait和notify方法作用线程的状态创建线程有几种方式&#xff1f;方式1&#xff1a;继承Thread创建线程方式2&#xff1a;通过Runnable方式3&#xff1a;通过Callable创建线程方式4&#xff1a;通过线程池概述ThreadPoolExecutor API代码实现源码分析工作原理&#xff…

力扣刷题Days7第二题--242.有效的字母异位词(js)

目录 1&#xff0c;题目 2&#xff0c;代码 2.1 我思考完成的-初版--哈希表思想 2.2略改进 2.3排序思想 3&#xff0c;学习与总结 3.1 判断数组元素是否都为0 3.2总结 1&#xff0c;题目 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词…

okHttp MediaType MIME格式详解

一、介绍 我们在做数据上传时&#xff0c;经常会用到Okhttp的开源库&#xff0c;okhttp开源库也遵循html提交的MIME数据格式。 所以我们经常会看到applicaiton/json这样的格式在传。 但是如果涉及到其他文件等就需要详细的数据格式&#xff0c;否则服务端无法解析 二、okHt…

重学SpringBoot3-@EnableConfigurationProperties注解

重学SpringBoot3-EnableConfigurationProperties注解 1. 引言2. EnableConfigurationProperties 的作用3. 使用示例4. 总结 1. 引言 Spring Boot 提供了一种便捷的方式来管理和校验应用程序的配置&#xff0c;即通过类型安全的配置属性。EnableConfigurationProperties 注解在…

光谱整形1

华为张德江&#xff1a;下一代光传送网将走向400G80波WDM系统_通信世界网 (cww.net.cn) 张德江指出&#xff0c;400G WDM系统具有三大基本特征&#xff1a;支持400G80波&#xff0c;单纤32T超大容量&#xff0c;传输距离与100G相当&#xff1b;支持32维以上的光交叉&#xff1…

搜维尔科技:3D Systems Geomagic Design X 逆向工程软件

产品概述 3D Systems Geomagic Design X 是全面的逆向工程软件 GeomagicoDesign XTM是全面的逆向工程软件&#xff0c;它结合了基于特征的CAD数模与三维扫描数据处理&#xff0c;使您能创建出可编辑、基于特征的CAD数模&#xff0c;并与您现有的CAD软件兼容。 拓展您的设计能…

请说明Vue中的异步组件加载

Vue中的异步组件加载是指当页面需要渲染某个组件时&#xff0c;可以在需要时再去加载这个组件&#xff0c;而不是在页面初始化的时候就将所有组件一次性加载进来。这种方式能够有效降低页面的初始加载时间&#xff0c;提升用户体验。 在Vue中&#xff0c;我们可以使用import函…

springboot实现多线程开发(使用@Async注解,简单易上手)

根据springboot的核心思想便捷开发&#xff0c;使用多线程也变得简单起来&#xff0c;通过一下几个步骤即可实现。 核心注解 EnableAsync将此注解加在启动类上&#xff0c;使项目支持多线程。 Async 使用我们的Async注解在所需要进行多线程的类上即可实现。 配置线程池 …

从第一原理看大语言模型

大模型基础框架 大模型幻觉问题 大模型能力 思维链模式 思维链模式激发的是大模型的推理能力 LLM知识能力RAG

【设计模式】观察者模式及函数式编程的替代C++

本文介绍观察者模式以及使用函数式编程替代简单的策略模式。 观察者模式 观察者模式是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;其所有依赖者都会收到通知并自动更新。 当对象间存在一对多关系时&#…

day13_微服务监控Nginx(微服务集成SBA)

文章目录 1 微服务系统监控1.1 监控系统的意义1.2 SBA监控方案1.3 SBA实战1.3.1 创建SBA服务端1.3.2 微服务集成SBA 1.4 微服务集成logback1.5 配置邮件告警 2 Nginx2.1 Nginx简介2.2 下载和安装2.2.1 方式1&#xff1a;window本地安装2.2.1.1 下载2.2.1.2 安装2.2.1.3 目录结构…

【开源物联网平台】FastBee认证方式和MQTT主题设计

&#x1f308; 个人主页&#xff1a;帐篷Li &#x1f525; 系列专栏&#xff1a;FastBee物联网开源项目 &#x1f4aa;&#x1f3fb; 专注于简单&#xff0c;易用&#xff0c;可拓展&#xff0c;低成本商业化的AIOT物联网解决方案 目录 一、接入步骤 1.1 设备认证 1.2 设备交…

新项目,Linux上一键安装MySQL,Redis,Nacos,Minio

大家好&#xff0c;我是 jonssonyan 分享一个我的一个开源项目&#xff0c;这是一个在 Linux 平台上一键安装各种软件的脚本项目&#xff0c;脚本使用 Shell 语言编写&#xff0c;后续还会增加更多软件的一键安装&#xff0c;代码在 GitHub 上全部开源的&#xff0c;开源地址如…

TypeScript(三)对象,接口,类,泛型

一、 对象 Typescript 中 Object 类型不单是指普通对象类型&#xff0c;它泛指所有的非原始类型&#xff0c;也就是对象&#xff0c;数组还有函数。 普通对象就是键值对的集合&#xff0c;我们可以使用接口来定义对象的结构。interface Person { // Person是接口CHname: strin…

Python算法题集_搜索插入位置

Python算法题集_搜索插入位置 题51&#xff1a;搜索插入位置1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【二分法查找】2) 改进版一【二分法查找终止条件判断】3) 改进版二【第三方模块】 4. 最优算法5. 相关资源 本文为Python算法题集之一的…