网络编程作业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.mzph.cn/news/725001.shtml

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

相关文章

2024全国水科技大会暨新能源及电子行业废水论坛(十一)

一、会议背景 为深入学习贯彻《中共中央、国务院关于全面推进美丽中国建设的意见》&#xff0c;全面贯彻实施《固体废物污染环境防治法》、《“十四五”全国城市基础设施建设规划》&#xff0c;推进我国污泥处理工程建设&#xff0c;提高处理产物资源化利用水平&#xff0c;促进…

堆排序实现

在了解堆的一些性质后&#xff0c;我们可以根据这些性质来实现一个较优的算法&#xff0c;也就是堆排序。 堆排序&#xff0c;顾名思义就是排序&#xff0c;其运用到堆的各种性质。首先我们要创建一个堆&#xff0c;在原有数组上进行向上或者向下调整使其变成一个堆。那么这时…

typedef的详细理解

目录 1.typedef对整型指针进行重命名 2.typedef对数组指针进行重命名 3.typedef对函数指针进行重命名 总结&#xff1a;所有重新命名的函数名必须写在*号旁边。 1.typedef对整型指针进行重命名 代码如下&#xff1a; typedef int* pint; int main() {int* p NULL;pint p…

Python内置模块

目录 什么是模块 模块分类 通过模块创建者分类 系统内置模块 第三方模块 在线安装 离线安装 模块导入 math和random模块介绍 math模块 random模块 什么是模块 在我们编写程序时&#xff0c;需要导入包。例如随机数的产生&#xff0c;需要import random。import XXX&…

计算机基础专升本笔记-汇总笔记(三)常用文件格式

计算机基础专升本笔记-汇总笔记&#xff08;三&#xff09;常用文件格式 一、文本文件格式 扩展名&#xff08;后缀名&#xff09;文件类型docxWord2010文档dotxWord2010模版xlsxExcel2010文档xltxExcel2010模版pptxPower Point 演示文稿potxPower Point 2010模版ppsxPower P…

XGboost的整理

XGboost&#xff08;extreme gradient boosting&#xff09;:高效实现了GBDT算法并进行了算法和工程上的许多改进。 XGboost的思路&#xff1a; 目标&#xff1a;建立k个回归树&#xff0c;使得树群的预测尽量接近真实值&#xff08;准确率&#xff09;而且有尽量大的泛化能力…

Java项目:39 springboot008房屋租赁系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 房屋租赁系统的设计基于现有的网络平台&#xff0c;主要有管理员、房东、用户三个角色 管理员可以在线查看系统已有的人中心、房屋类型管理、房屋信息…

在 Android 中使用 Kotlin 调用动态库

在 Android 开发中&#xff0c;有时候需要使用原生代码来执行一些特定的任务&#xff0c;比如高性能计算、访问硬件或者使用现有的 C/C 库。通常&#xff0c;这样的原生代码会被编译成动态库&#xff08;.so 文件&#xff09;&#xff0c;然后在应用中被调用。 本篇博客将介绍…

创建java项目

文章目录 一、安装idea二、创建一个java项目1.设置名称 项目路径 安装JDK&#xff08;自己选择一个位置存放JDK&#xff09;2.创建完成之后 在src文件夹下创package包 再在包下创建Class类3. hellojava类创建完成设置打印语句 输出HelloJava 一、安装idea 官网地址 二、创建一…

不买后悔的阿里云服务器租用价格表_优惠活动整理_2024新版

2024阿里云服务器优惠活动政策整理&#xff0c;阿里云99计划ECS云服务器2核2G3M带宽99元一年、2核4G5M优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M服务器61元一年、2核4G4M带宽165元1年&#xff0c;云服务器4核16G10M带宽26元1个月、149元半年&#xff0c;云服务器8核…

面试经典150题(105-107)

leetcode 150道题 计划花两个月时候刷完之未完成后转&#xff0c;今天&#xff08;第2天&#xff09;完成了3道(105-107)150 105.&#xff08;191. 位1的个数&#xff09;题目描述&#xff1a; 编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&am…

simplex算法的代码实现

def pivot(N, B, A, b, c, v, l, e):N对应非基本元变量下标,B对应基本元变量下标,A对应非基本元在约束方程组中的系数相反数形成的矩阵,b对应约束条件中小于等于号右边的数值集合,c对应目标函数中变量系数形成的集合,v对应当前目标函数的取值,l对应转出变量下标在B中的位置,e…

使用Http请求下载文件带来的问题

java.io.IOException: Broken pipe 当使用http请求的方式将文件作为响应内容给浏览器&#xff0c;这个时候如果浏览器未开启自动下载(浏览器可能会终止这个tcp连接)&#xff0c;文件不会下载成功&#xff0c;但是这个时候请求已经到达服务器&#xff0c;如果这个时候&#xff0…

Dynamo初学常识梳理(四)——Revit图元

希望想学 Dynamo 的小伙伴坚持住&#xff0c;每天积累一点点知识&#xff0c;Dynamo 你很快就能上手的&#xff01;Dynamo 并不是你想的那样难学哦&#xff01; 今天要讲的是如何从 Dynamo 中获取 Revit 的图元&#xff0c;这些节点很常用&#xff0c;不需要全背下来&#xff0…

指针运算笔试题解析

题目1&#xff1a; int main() { int a[5] { 1, 2, 3, 4, 5 }; int* ptr (int*)(&a 1); printf("%d %d", *(a 1), *(ptr - 1)); return 0; } ptr中存放了整个数组的地址&#xff0c;ptr是int*类型&#xff0c;&a1跳到5的地址后又被强制类…

Freesia Spring配置文件与其他文件

common-api模块【application.yml文件】 project:version: 来自顶级pom.xml的properties配置 --- spring:profiles:# 根据当前活跃环境指定对应的 application文件active: profiles.active --- spring:datasource:driver-class-name: com.p6spy.engine.spy.P6SpyDriverurl: jd…

算法DFS 复习

思路&#xff1a;for 代表的是每一位的纵向&#xff0c;数字变化&#xff0c;dfs 代表的是横向的&#xff0c;位置变化。vis 来做到每个枚举的数不重复&#xff0c;并且要在搜索前记录&#xff0c;搜索后还原。模拟该样例 dfs3 的时候是输出&#xff0c;dfs0&#xff0c;1&…

『大模型笔记』Ollama ModelFile(模型文件)

Ollama ModelFile(模型文件) 文章目录 一. Ollama 模型文件1.1. 格式1.2. 示例1.2.1. 基本`Modelfile`1.2.1. `模型文件`位于 [ollama.com/library](https://ollama.com/library)1.3. 说明1.3.1. From(必填)1.3.1.1. 从 llama2 构建1.3.1.2. 从 `bin` 文件构建1.3.2. PARAMETER…

【DAY05 软考中级备考笔记】线性表,栈和队列,串数组矩阵和广义表

线性表&#xff0c;栈和队列&#xff0c;串数组矩阵和广义表 2月28日 – 天气&#xff1a;阴转晴 时隔好几天没有学习了&#xff0c;今天补上。明天发工资&#xff0c;开心&#x1f604; 1. 线性表 1.1 线性表的结构 首先线性表的结构分为物理结构和逻辑结构 物理结构按照实…

【LabVIEW FPGA】CIC滤波器

一、CIC滤波器应用概述 在通信数字信号上下变频时&#xff0c;经常会用到对数字信号的升采样和降采样&#xff0c;即通过CIC数字速率器实现变采样率。 二、滤波器IP 首先设置滤波器基本参数&#xff08;filter specification&#xff09; 滤波器类型&#xff08;Filter Type…