day06-网路编程

#include <myhead.h>

int do_add(sqlite3 *ppDb)
{
    int numb;
    char name[20];
    int age;
    int salary;
    printf("请输入要插入的信息:");
    scanf("%d %s %d %d", &numb, name, &age, &salary);
    char sql[128] = "";
    sprintf(sql, "INSERT INTO worker VALUES(%d,'%s',%d,%d)", numb, name, age, salary);

    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;
    }
}
int do_delete(sqlite3 *ppDb)
{
    char sql[128] = "DELETE FROM worker where name = 'xzh'";
    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;
    }
}
int do_update(sqlite3 *ppDb)
{
    char sql[128] = "UPDATE worker SET salary = 16000 where name = 'ghn'";
    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;
    }
}

int callback(void *arg,int argc, char **argv, char **azColName)
{
    int i; 
    for(i=0; i<argc; i++){ 
       printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); 
    } 
    printf("\n"); 
    return 0; 

}
int do_search(sqlite3 *ppDb)
{
    struct INFO msg;
    char sql[128] = "SELECT * FROM worker WHERE numb = 1001";
    char *errmsg = NULL;

    if (sqlite3_exec(ppDb, sql,callback,0,&errmsg) != SQLITE_OK)
    {
        printf("exec error : %s\n", errmsg);
        sqlite3_free(errmsg);
        errmsg = NULL;
        return -1;
    }
}
int main(int argc, char const *argv[])
{
    // 1.定义数据库句柄指针
    sqlite3 *ppDb = NULL;

    // 2.打开数据库,如果数据库不存在,则创建数据库并打开数据库
    //  将句柄由参数2返回,
    if (sqlite3_open("./my.db", &ppDb) != SQLITE_OK)
    {
        printf("sqlite3_open error,errcode=%d\n", sqlite3_errcode(ppDb));
        return -1;
    }
    printf("sqlite3_open success\n");
    /*
    // 创建数据库
        // 1.准备sql语句
        char sql[128] = "CREATE TABLE worker(numb int PRIMARY KEY, name char, age int, salary double)";
        //  char *sql = "CREATE TABLE worker(numb int PRIMARY KEY, name char, age int, 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");
        }

        getchar();
        printf("请输入任意键,按回车清屏\n");
        while (getchar() != '\n');
    }

END:
    // 关闭数据库
    sqlite3_close(ppDb);
    return 0;
}

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

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

相关文章

SkyWalking 本地启动以及闪退问题

1. 下载包 Downloads | Apache SkyWalking SkyWalking APM包含OAP和UI Java Agent 就是Java 的探针 2. 运行 UI 默认端口是 8080&#xff0c; OAP 默认端口是 11800&#xff08;grpc&#xff09;12800&#xff08;http&#xff09; 如果占用可以修改配置文件 UI 项目的配…

手撕指针第一页

1. 理解内存和地址 1.1 内存 内存&#xff0c;顾名思义就是电脑用来存储数据的&#xff0c;当CPU&#xff08;中央处理器&#xff09;在工作时&#xff0c;不仅需要从内存中拿取数据也需要将数据放入内存当中&#xff0c;当把内存引入到现实当中&#xff0c;就像学校里面的宿…

如何恢复已删除的华为手机图片?5 种方式分享

不幸的现实是&#xff0c;华为的珍贵时刻有时会因为意外删除、软件故障或其他不可预见的情况而在眨眼之间消失。在这种情况下&#xff0c;寻求恢复已删除的图片成为个人迫切关心的问题。 本文旨在为用户提供如何从华为恢复已删除图片的实用解决方案。我们将探索五种可行的方法…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RowSplit容器组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之RowSplit容器组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、RowSplit容器组件 将子组件横向布局&#xff0c;并在每个子组件之间插入一…

CentOS/Fedora/Ubuntu/Debian 系统 wget 命令

wget 是云服务器安装环境和面板常用下载命令。下载软件或从远程服务器下载备份到本地服务器&#xff0c;也可以使用 wget 把文件下载到云服务器上。 VPS wget 命令最常用使用方法如下&#xff1a; 安装 wget 一般来说 wget 命令是系统自带的&#xff0c;方面安装环境和面板&…

【Python】可变数据类型 不可变数据类型 || hash

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…

神经网络算法(带你了解 原理 实践)

目录 引言 一、神经网络的历史背景与重要性 二、神经网络算法在现代机器学习中的地位与应用 三、神经网络基础知识​编辑 &#xff08;一&#xff09;神经元模型与工作原理 &#xff08;二&#xff09;网络结构 &#xff08;三&#xff09;激活函数的作用与常见类型 四…

云原生架构设计:开放应用模型(OAM)的重要性与实践

在当今云计算时代&#xff0c;云原生架构已经成为许多企业追求的理想状态&#xff0c;在云原生架构设计中&#xff0c;开放应用模型是至关重要的一部分。本文灸哥将和你一起探讨开放应用模型的概念、意义以及实践方法&#xff0c;以帮助大家更好地理解和应用云原生架构中的开放…

guava的使用

对数组操作前判断是否会越界&#xff1a; List<String> s new ArrayList<>();System.out.println(Preconditions.checkElementIndex(2,s.size(),"下标长度超过了")); 是否为空 String s null;System.out.println(Preconditions.checkNotNull(s)); 判空…

如何使用LEAKEY轻松检测和验证目标服务泄露的敏感凭证

关于LEAKEY LEAKEY是一款功能强大的Bash脚本&#xff0c;该脚本能够检测和验证目标服务中意外泄露的敏感凭证&#xff0c;以帮助广大研究人员检测目标服务的数据安全状况。值得一提的是&#xff0c;LEAKEY支持高度自定义开发&#xff0c;能够轻松添加要检测的新服务。 LEAKEY主…

HUAWEI华为MateBook D 14 2022款 12代酷睿版集显(NbF-16)工厂模式原厂Windows11预装OEM系统,含F10智能还原功能

系统下载链接&#xff1a;https://pan.baidu.com/s/1kgJvwSq5eOdme7J9PDXIxQ?pwdxvz8 提取码&#xff1a;xvz8 华为笔记本电脑原装出厂系统工厂安装包&#xff0c;含F10功能、系统自带所有驱动、系统属性专属联机支持标志、Office办公软件、华为电脑管家等预装程序&#xf…

练习 5 Web [GXYCTF2019]BabyUpload

[GXYCTF2019]BabyUpload 猜测直接上传txt会被过滤&#xff0c;提示“上传类型也太露骨了吧&#xff01;”按经验传入一个"muma.phtml" 提示过滤了“ph”相关的后缀 传入muma.jpg等图像格式&#xff0c;提示表明复原并检测了文件内容 审查文件后缀Context-type 不能…

机械臂中TCP配置

红色、绿色、蓝色箭头分别代表x、y、z三个方向

电脑解锁后黑屏有鼠标--亲测!!不需要重装系统!!

问题&#xff1a;上周电脑黑屏&#xff0c;只有鼠标&#xff0c;鼠标还不能右键&#xff01;&#xff01; 中招&#xff1a;win10系统最新版火绒安全 &#xff0c;那你有概率获得开机黑屏套餐一份。 原因是&#xff1a;火绒把我们的explorer删除了导致黑屏&#xff0c;这个文…

Java面试篇【并发编程·进阶】常见面试题(2024最新)

并发常见面试题进阶 1.synchronized synchronized关键字解决的是多线程之间访问资源的同步性&#xff0c;synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能被一个线程执行。 监视器锁&#xff08;monitor&#xff09;是依赖于底层的操作系统的 Mutex Lock来…

2024电子商务与互联网技术国际会议(ICECIT 2024)

2024电子商务与互联网技术国际会议&#xff08;ICECIT 2024) 一、【会议简介】 2024电子商务与互联网技术国际会议&#xff08;ICECIT 2024&#xff09;将于2024年在杭州举行。这是一个重要的学术会议&#xff0c;旨在汇集全球的专家、学者和业界领袖&#xff0c;共同探讨电子…

Python爬虫——Requests

目录 简介 基本使用​编辑 ​编辑 安装 一个类型和六个属性 请求类型 GET 代码示例 POST 代码示例 代理 古诗文网绕过验证码登录 总结 简介 Python的Requests库是一个用于发送HTTP请求的常用库。它提供了简单且人性化的API&#xff0c;使得发送HTTP请求变得非常容易。…

【MATLAB源码-第158期】基于matlab的海马优化算法(SHO)无人机三维路径规划,输出做短路径图和适应度曲线

操作环境&#xff1a; MATLAB 2022a 1、算法描述 海马优化器&#xff08;Sea Horse Optimizer, SHO&#xff09;是一种近年来提出的新型启发式算法&#xff0c;其设计灵感来源于海洋中海马的行为模式&#xff0c;特别是它们在寻找食物和伴侣时表现出的独特策略。海马因其独特…

【Flink网络数据传输】OperatorChain的设计与实现

文章目录 1.OperatorChain的设计与实现2.OperatorChain的创建和初始化3.创建RecordWriterOutput 1.OperatorChain的设计与实现 OperatorChain的大致逻辑 在JobGraph对象的创建过程中&#xff0c;将链化可以连在一起的算子&#xff0c;常见的有StreamMap、StreamFilter等类型的…

[C语言]——分支和循环(1)

目录 一.if语句 1.if 2.else 3.分支中包含多条语句 4.嵌套if 5.悬空else问题 二.关系操作符 三.条件操作符 C语⾔是结构化的程序设计语⾔&#xff0c;这⾥的结构指的是顺序结构、选择结构、循环结构&#xff0c;C语⾔是能够实现这三种结构的&#xff0c;其实我们如果仔细分析&a…