当前位置: 首页 > news >正文

2024.3.6

#include<myhead.h>int do_add(sqlite3* ppDb)
{int numb;char name[10];int salary;printf("请输入员工的信息:");scanf("%d %s %d",&numb, name, &salary);//将员工的信息存储到数组char sql_add[128] = "";sprintf(sql_add,"INSERT INTO Worker values(%d,'%s',%d)",numb,name,salary);char *errmsg = NULL;   //存放执行sql语句的错误信息if(sqlite3_exec(ppDb, sql_add, NULL, NULL, &errmsg) != SQLITE_OK){printf("exec error: %s\n", errmsg);sqlite3_free(errmsg);errmsg = NULL;return -1;}}int do_delete(sqlite3* ppDb)
{//定义一个数组存储sql语句char sql[128]="";char *errmsg = NULL;int numb;printf("请输入要删除的员工的工号:");scanf("%d",&numb);sprintf(sql,"delete from Worker where numb =%d",numb);if(sqlite3_exec(ppDb, sql, NULL,NULL, &errmsg) != SQLITE_OK){printf("exec error:%s\n",errmsg);errmsg = NULL;return -1;}
}int do_update(sqlite3* ppDb)
{//将员工的信息存储到数组char sql[128] = "";int salary;printf("请输入要更新的员工的信息:");scanf("%d",&salary);sprintf(sql,"UPDATE Worker SET salary=%d where id=1001",salary);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;}}
int do_search(sqlite3* ppDb)
{//将员工的信息存储到数组char sql_add[128] = "";printf("请输入要查询的员工的信息:");gets(sql_add);char *errmsg = NULL;   //存放执行sql语句的错误信息if(sqlite3_exec(ppDb, sql_add, NULL, NULL, &errmsg) != SQLITE_OK){printf("exec error: %s\n", errmsg);sqlite3_free(errmsg);errmsg = NULL;return -1;}}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 *sql = "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;
}

相关文章:

  • PTA天梯赛L1 021-030题目解析
  • 《汇编语言》- 读书笔记 - 第13章-int 指令
  • 微服务架构 | 数据同步策略
  • 《TCP/IP详解 卷一》第12章 TCP初步介绍
  • 记录前端面试的一些笔试题(持续更新......)
  • 从Win转Mac,我的感受如何
  • Matlab在同一张图中如何加入多个图例
  • 速卖通平台的API返回结果有哪些数据字段?
  • 【C++ vscode 环境问题】vscode编译的时候:未定义标识符 thread mingw-w64安装支持c++11中thread
  • Python3的十个高级功能太强大了!
  • Webserve(4): HTTP解析
  • vue全家桶详解
  • 总线要点笔记
  • 快手item_get API详解:轻松获取商品详情的秘密武器
  • CSS盒子模型笔记
  • “大数据应用场景”之隔壁老王(连载四)
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • emacs初体验
  • JAVA并发编程--1.基础概念
  • laravel 用artisan创建自己的模板
  • Linux Process Manage
  • Linux后台研发超实用命令总结
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Sublime text 3 3103 注册码
  • vuex 笔记整理
  • 蓝海存储开关机注意事项总结
  • 数据科学 第 3 章 11 字符串处理
  • ​iOS安全加固方法及实现
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ${factoryList }后面有空格不影响
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (4) PIVOT 和 UPIVOT 的使用
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (四)Android布局类型(线性布局LinearLayout)
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net MySql
  • .Net 路由处理厉害了
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @RestController注解的使用
  • @selector(..)警告提示
  • [ C++ ] STL---仿函数与priority_queue
  • [ IO.File ] FileSystemWatcher
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [AIGC] Redis基础命令集详细介绍
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]