网络编程 24/3/6 作业

1、数据库的增删改

#include <myhead.h>
int main(int argc, const char *argv[])
{
	//定义数据库句柄指针
	sqlite3 *kdb=NULL;
	//打开数据库,不存在则创建
	if(sqlite3_open("./my.db",&kdb)!=SQLITE_OK)
	{
		printf("sqlite3_open error\n");
		return -1;
	}
	printf("sqlite3_open success\n");

	//创建数据表
	//准备sql语句
	char sql[128]="create table if not exists worker(id double,name char,salary double)";	
	char *errmsg=NULL;//存放执行sql语句的错误信息
	if(sqlite3_exec(kdb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
	{
		printf("exec error:%s\n",errmsg);
		sqlite3_free(errmsg);//防止内存泄露
		errmsg=NULL;
		return -1;
	}
	//增删改查
	int key=-1;
	while(1)
	{
		printf("\t\t\t==信息表==\n");
		printf("\t\t1、插入信息\n");
		printf("\t\t2、删除信息\n");
		printf("\t\t3、修改信息\n");
		printf("\t\t4、退出\n");
		scanf("%d",&key);
		int id=0;;
		char name[10]="";
		int salary=0;;
		switch(key)
		{
		case 1:
			{
				printf("please enter id:");
				scanf("%d",&id);
				printf("please enter name:");
				scanf("%s",name);
				printf("please enter salary:");
				scanf("%d",&salary);
				char sq1[128]="";
				sprintf(sq1,"insert into worker(id,name,salary) values(%d,'%s',%d)",id,name,salary);
				if(sqlite3_exec(kdb,sq1,NULL,NULL,&errmsg)!=SQLITE_OK)
				{
					printf("add error\n");
					sqlite3_free(errmsg);//防止内存泄露
					errmsg=NULL;
					return -1;
				}
				printf("add success\n");
			}
			break;
		case 2:
			{
				printf("please enter id to delete:");
				scanf("%d",&id);
				char sq2[128]="";
				sprintf(sq2,"delete from worker where id=%d",id);
				if(sqlite3_exec(kdb,sq2,NULL,NULL,&errmsg)!=SQLITE_OK)
				{
					printf("delete error\n");
					sqlite3_free(errmsg);//防止内存泄露
					errmsg=NULL;
					return -1;
				}
				printf("delete success\n");
			}
			break;
		case 3:
			{
				int n=-1;
				printf("please enter 1 to modify id,2 to modify name,3 to modify salary\n");
				scanf("%d",&n);
				if(n==1)
				{
					int oldid=0;
					printf("please enter old id:");
					scanf("%d",&oldid);
					printf("please enter new id:");
					scanf("%d",&id);
					char sq3[128]="";
					sprintf(sq3,"update worker set id=%d where id=%d",id,oldid);
					if(sqlite3_exec(kdb,sq3,NULL,NULL,&errmsg)!=SQLITE_OK)
					{
						printf("modify error\n");
						sqlite3_free(errmsg);//防止内存泄露
						errmsg=NULL;
						return -1;
					}
					printf("modify success\n");
				}

				if(n==2)
				{
					printf("please enter id:");
					scanf("%d",&id);
					printf("please enter new name:");
					scanf("%s",name);
					char sq4[128]="";
					sprintf(sq4,"update worker set name='%s' where id=%d",name,id);
					if(sqlite3_exec(kdb,sq4,NULL,NULL,&errmsg)!=SQLITE_OK)
					{
						printf("modify error\n");
						sqlite3_free(errmsg);//防止内存泄露
						errmsg=NULL;
						return -1;
					}
					printf("modify success\n");
				}
				if(n==3)
				{
					printf("please enter id:");
					scanf("%d",&id);
					printf("please enter new salary:");
					scanf("%d",&salary);
					char sq5[128]="";
					sprintf(sq5,"update worker set salary=%d where id=%d",salary,id);
					if(sqlite3_exec(kdb,sq5,NULL,NULL,&errmsg)!=SQLITE_OK)
					{
						printf("modify error\n");
						sqlite3_free(errmsg);//防止内存泄露
						errmsg=NULL;
						return -1;
					}
					printf("modify success\n");
				}
			}
			break;
			}
		if(key==4)
		{
			printf("退出成功\n");
			break;
		}
	}
	//关闭数据库
	sqlite3_close(kdb);
	return 0;
}

 

2、思维导图

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

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

相关文章

如何解决无法联网的IP代理问题

目录 前言 一、检查网络连接问题 二、检查IP代理配置问题 三、更换IP代理 四、使用IP池 总结 前言 在进行网络爬虫、数据采集等涉及到频繁请求的操作中&#xff0c;IP代理是一个必不可少的工具。通过使用IP代理&#xff0c;我们可以隐藏真实的IP地址&#xff0c;防止被目…

解决DBeaver执行脚本报错No active connection

解决DBeaver执行脚本报错No active connection 1、报错问腿 2、问题解决 2.1、右键点击该数据库&#xff0c;选择SQL编辑器&#xff0c;选择新建SQL编辑器&#xff0c;然后将sql语句复制过去。 或者左击选中数据库后直接使用快捷键 Ctrl] 2.2、在Project-General中找到Scr…

Nginx入门

Nginx入门 本章目标 Ninux简介 安装 Nginx配置 负载均衡 静态化处理 本章内容 一、什么是Nginx&#xff1f; Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的http:/…

Claude3深夜震撼发布!模型特点分析,附使用教程

Claude3深夜震撼发布&#xff01;模型特点分析&#xff0c;附使用教程 引言 最新发布的Claude3引起了广泛关注&#xff0c;这次发布一举推出了三个不同类型的模型&#xff0c;分别是Claude 3 Haiku、Claude 3 Sonnet和Claude 3 Opus。每个模型都具有独特的特点和能力&#xff…

逆向案例五、爬取b站评论,表单MD5加密

1.便捷写爬虫网站&#xff1a; Convert curl commands to code 使用流程&#xff1a;又点击想要抓的包&#xff0c;复制URL&#xff08;base&#xff09;格式复制 在上面链接中粘贴即可 2.找到含有评论的包&#xff08;即main?oid)&#xff1a;观察表单发现两处参数在变化&…

protobuf 25.3在window的安装

1、下载地址 protobuf 25.3 下载完后&#xff0c;执行下面语句更新第三方库 git submodule update --init --recursive2、 cmake安装 注意&#xff1a;编译需要在vs2019及以上&#xff0c;因为abseil-cpp的编译需要是vs2019及以上

Nacos基础(注册中心和配置中心)

文章目录 参考文章一、 配置管理1、添加依赖2、添加配置信息3、创建例子4、在Nacos创建配置命名空间&#xff1a;配置集配置id配置组加载多配置文件 二、注册中心2.1、添加依赖2.2、添加项目Nacos配置2.3、添加服务发现注解这个时候你启动Nacos 如果遇到跳转链接失效请在评论区…

numpy——基础知识(创建/类型/形状/运算)(python)

简介 NumPy 是一个 Python 包。它代表 Numeric Python。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。 Numeric&#xff0c;即 NumPy 的前身&#xff0c;是由 Jim Hugunin 开发的。 也开发了另一个包 Numarray &#xff0c;它拥有一些额外的功能。 2005年&#…

2024年腾讯云发红包了,可用于抵扣订单金额,你们领了吗?

在2024年腾讯云新春采购节优惠活动上&#xff0c;可以领取新年惊喜红包&#xff0c;打开活动链接 https://curl.qcloud.com/oRMoSucP 会自动弹出红包领取窗口&#xff0c;如下图&#xff1a; 腾讯云2024新春采购节红包领取 如上图所示&#xff0c;点击“领”红包&#xff0c;每…

【DevSecOps】2024 年需要警惕的 10 大 Web 应用程序安全威胁

【DevSecOps】2024 年需要警惕的 10 大 Web 应用程序安全威胁 由于 2023 年出现了许多创新,我们之前所了解的许多内容都发生了巨大变化;随着其中一些重大变化,威胁格局也发生了转变,一些旧威胁减少了,一些新威胁增加了。 技术每天都在不断变化,当我们谈论技术和相关威胁…

Redis核心数据结构之SDS和链表(三)

SDS与C字符串的区别 二进制安全 C字符串中的字符必须符合某种编码(比如ASCII),并且除了字符串的末尾之外&#xff0c;字符串里面不能包含空字符&#xff0c;否则最先被程序读入的空字符将被误认为是字符串结尾&#xff0c;这些限制使得C字符串只能保存文本数据&#xff0c;而…

数据结构(七)——线性表的基本操作

&#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x1f609; 在csdn获奖荣誉: &#x1f3c6;csdn城市之星2名 ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ …

Pytorch学习 day05(RandomCrop、Transforms工具使用总结)

RandomCrop 将PIL或Tensor格式的输入图片&#xff0c;随机裁剪指定尺寸的部分输入尺寸可以为序列或单个整形数字代码如下&#xff1a; from PIL import Image from torchvision import transforms from torch.utils.tensorboard import SummaryWriterimg Image.open("i…

CSS常见用法 以及JS基础语法

CSS简介 首先我们要明白css对网页的页面效果就类似于化妆的效果,使得页面更好看 我们需要明白的就是CSS怎么使用即可 首先CSS的基本语法是<style></style>标签来修改 基本语法规范是选择器n条选择规范 例如 <style>p{color : red;} </style> 这里就是将…

C#知识点-22(ADO.NET五个对象,SQL漏洞注入攻击)

ADO.NET 概念&#xff1a;ADO.NET就是一组类库&#xff0c;这组类库可以让我们通过程序的方式访问数据库&#xff0c;就像System.IO的类用类操作文件一样&#xff0c;System.Data这组类是用来操作数据库的&#xff08;不光是MSSql Server&#xff09;&#xff0c;它提供了统一…

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

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

java 中 string常用方法及相关的例子

我将为您详细讲解 Java 中 String 类的常用方法及其相关例子。String 类是 Java 中最常用的类之一&#xff0c;它代表字符串&#xff0c;提供了许多用于操作字符串的方法。 1. 字符串比较 - equals(Object obj): 比较字符串的内容是否相等。 - equalsIgnoreCase(String str): 比…

阿里云域名优惠口令2024年最新,com、cn和域名注册续费使用

2024年阿里云域名优惠口令&#xff0c;com域名续费优惠口令“com批量注册更享优惠”&#xff0c;cn域名续费优惠口令“cn注册多个价格更优”&#xff0c;cn域名注册优惠口令“互联网上的中国标识”&#xff0c;阿里云优惠口令是域名专属的优惠码&#xff0c;可用于域名注册、续…

堆以及堆的实现

文章目录 堆的概念堆的实现HeapPushHeapPop HeapTop HeapSize HeapEmpty堆的应用 堆的概念 堆是一颗完全二叉树每个结点的值都小于子结点的值&#xff0c;这颗二叉树为小根堆每个结点的值都大于子结点的值&#xff0c;这颗二叉树为大根堆堆的定义如下&#xff1a;n个元素的序列…

覆盖element-ui的el-menu样式记录:背景图片、菜单图标、菜单高亮与鼠标悬浮高亮、调整子菜单等样式

页面中修改el-menu 设置background-color"transparent"&#xff0c;menu菜单下的背景图片则能正常显示了 <el-menuclass"el-menu-demo"mode"horizontal"background-color"transparent"><el-menu-item index"1">…