C语言:C语言实现对MySQL数据库表增删改查功能
基础DOME可以用于学习借鉴;
具体代码
#include <stdio.h>
#include <mysql.h> // mysql 文件,如果配置ok就可以直接包含这个文件//宏定义 连接MySQL必要参数
#define SERVER "localhost" //或 127.0.0.1
#define USER "root"
#define PASSWORD "W113416w+" //password
#define DATABASE "domedata" //your_database
int main(void) {MYSQL mysql; //数据库句柄MYSQL_RES* res; //查询结果集 MYSQL_ROW row; //记录结构体//初始化数据库 mysql_init(&mysql);if (&mysql == NULL) {//fprintf(stderr, "%s\n", mysql_error(&mysql));exit(1);}//设置字符编码mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");//连接数据库if (mysql_real_connect(&mysql, SERVER, "root",//"password", "database_name"分别填写自己的的数据库登录密码和表所在的数据库名称//这里替换成自己的的数据库等路密码和自己所建的数据库名称即可PASSWORD, DATABASE, 3306, NULL, 0) == NULL) {//fprintf(stderr, "%s\n", mysql_error(&mysql));mysql_close(&mysql);printf("错误原因: %s\n", mysql_error(&mysql));printf("连接失败!\n");exit(-1);}//查询数据int ret = mysql_query(&mysql, "select * from student;");//student是自己在数据库中所建的表名printf("ret: %d\n", ret);printf("第一次打印数据库 \n"); //打印//获取结果集res = mysql_store_result(&mysql);//给 ROW 赋值,判断 ROW 是否为空,不为空就打印数据。while (row = mysql_fetch_row(res)) {printf("%s ", row[0]); //打印 IDprintf("%s ", row[1]); //打印姓名printf("%s ", row[2]); //打印班级printf("%s \n", row[3]);//打印性别}// 插入数据if (mysql_query(&mysql, "INSERT INTO student (id,name,age,grade,iphone) VALUES (2,'Alice', 20,92,'15555556666')")) {fprintf(stderr, "%s\n", mysql_error(&mysql));mysql_close(&mysql);exit(1);}printf("Inserted successfully.\n");// 查询数据printf("——插入数据后:——第二次打印数据库 \n"); //打印 ret = mysql_query(&mysql, "select * from student;");//student是自己在数据库中所建的表名printf("ret: %d\n", ret);//获取结果集res = mysql_store_result(&mysql);//给 ROW 赋值,判断 ROW 是否为空,不为空就打印数据。while (row = mysql_fetch_row(res)) {printf("%s ", row[0]); //打印 IDprintf("%s ", row[1]); //打印姓名printf("%s ", row[2]); //打印班级printf("%s \n", row[3]);//打印性别}// 更新数据if (mysql_query(&mysql, "UPDATE student SET grade = 99 WHERE name = 'Alice'")) {//fprintf(stderr, "%s\n", mysql_error(&mysql));mysql_close(&mysql);exit(1);}printf("Updated successfully.\n");// 查询数据printf("——修改数据后:——第三次打印数据库 \n"); //打印 ret = mysql_query(&mysql, "select * from student;");//student是自己在数据库中所建的表名printf("ret: %d\n", ret);//获取结果集res = mysql_store_result(&mysql);//给 ROW 赋值,判断 ROW 是否为空,不为空就打印数据。while (row = mysql_fetch_row(res)) {printf("%s ", row[0]); //打印 IDprintf("%s ", row[1]); //打印姓名printf("%s ", row[2]); //打印班级printf("%s \n", row[3]);//打印性别}// 删除数据if (mysql_query(&mysql, "DELETE FROM student WHERE name = 'Alice'")) {//fprintf(stderr, "%s\n", mysql_error(&mysql));mysql_close(&mysql);exit(1);}printf("Deleted successfully.\n");// 查询数据printf("——删除数据后:——第四次打印数据库 \n"); //打印 ret = mysql_query(&mysql, "select * from student;");//student是自己在数据库中所建的表名printf("ret: %d\n", ret);//获取结果集res = mysql_store_result(&mysql);//给 ROW 赋值,判断 ROW 是否为空,不为空就打印数据。while (row = mysql_fetch_row(res)) {printf("%s ", row[0]); //打印 IDprintf("%s ", row[1]); //打印姓名printf("%s ", row[2]); //打印班级printf("%s \n", row[3]);//打印性别}//释放结果集 mysql_free_result(res);//关闭数据库mysql_close(&mysql);system("pause");return 0;
}
输出结果:
ret: 0
第一次打印数据库
0 李四 21 98
1 王五 20 85
Inserted successfully.
——插入数据后:——第二次打印数据库
ret: 0
0 李四 21 98
1 王五 20 85
2 Alice 20 92
Updated successfully.
——修改数据后:——第三次打印数据库
ret: 0
0 李四 21 98
1 王五 20 85
2 Alice 20 99
Deleted successfully.
——删除数据后:——第四次打印数据库
ret: 0
0 李四 21 98
1 王五 20 85
请按任意键继续. . .
相关链接
- SQL:Windows下C/C++连接访问MySQL数据库(亲测有效!一遍过!)
相关文章:

C语言:C语言实现对MySQL数据库表增删改查功能
基础DOME可以用于学习借鉴; 具体代码 #include <stdio.h> #include <mysql.h> // mysql 文件,如果配置ok就可以直接包含这个文件//宏定义 连接MySQL必要参数 #define SERVER "localhost" //或 127.0.0.1 #define USER "roo…...

C++ 二叉搜索树(Binary Search Tree, BST)深度解析与全面指南:从基础概念到高级应用、算法优化及实战案例
🌟个人主页:落叶 🌟当前专栏: C专栏 目录 ⼆叉搜索树的概念 ⼆叉搜索树的性能分析 ⼆叉搜索树的插⼊ ⼆叉搜索树的查找 二叉搜索树中序遍历 ⼆叉搜索树的删除 cur的左节点为空的情况 cur的右节点为空的情况 左,右节点都不为…...

刷题日常(移动零,盛最多水的容器,三数之和,无重复字符的最长子串)
移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 俩种情况: 1.当nums[i]为0的时候 直接i 2.当nums[i]不为0的时候 此时 …...
深入了解决策树---机器学习中的经典算法
引言 决策树(Decision Tree)是一种重要的机器学习模型,以直观的分层决策方式和简单高效的特点成为分类和回归任务中广泛应用的工具。作为解释性和透明性强的算法,决策树不仅适用于小规模数据,也可作为复杂模型的基石&…...

Elasticsearch对于大数据量(上亿量级)的聚合如何实现?
大家好,我是锋哥。今天分享关于【Elasticsearch对于大数据量(上亿量级)的聚合如何实现?】面试题。希望对大家有帮助; Elasticsearch对于大数据量(上亿量级)的聚合如何实现? 1000道 …...

深度学习模型:循环神经网络(RNN)
一、引言 在深度学习的浩瀚海洋里,循环神经网络(RNN)宛如一颗独特的明珠,专门用于剖析序列数据,如文本、语音、时间序列等。无论是预测股票走势,还是理解自然语言,RNN 都发挥着举足轻重的作用。…...

前端---HTML(一)
HTML_网络的三大基石和html普通文本标签 1.我们要访问网络,需不需要知道,网络上的东西在哪? 为什么我们写,www.baidu.com就能找到百度了呢? 我一拼ping www.baidu.com 就拼到了ip地址: [119.75.218.70]…...

SQL 复杂查询
目录 复杂查询 一、目的和要求 二、实验内容 (1)查询出所有水果产品的类别及详情。 查询出编号为“00000001”的消费者用户的姓名及其所下订单。(分别采用子查询和连接方式实现) 查询出每个订单的消费者姓名及联系方式。 在…...

银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法
银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法 1、支持环境2、详细操作说明步骤1:用root账户登录电脑步骤2:导航到kylin-wm-chooser目录步骤3:编辑default.conf文件步骤4:重启电脑 3、结语 Ὁ…...

抓包之使用chrome的network面板
写在前面 本文看下工作中非常非常常用的chrome的network面板功能。 官方介绍:地址。 1:前置 1.1:打开 右键-》检查,或者F12。 1.2:组成部分 2:控制器常用功能 详细如下图: 接着我们挑选其…...
避坑ffmpeg直接获取视频fps不准确
最近在做视频相关的任务,调试代码发现一个非常坑的点,就是直接用ffmpeg获取fps是有很大误差的,如下: # GPT4o generated import ffmpegprobe ffmpeg.probe(video_path, v"error", select_streams"v:0", sho…...

大数据新视界 -- 大数据大厂之 Hive 函数库:丰富函数助力数据处理(上)(11/ 30)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
深入解析 Django 中数据删除的最佳实践:以动态管理镜像版本为例
文章目录 引言场景与模型设计场景描述 删除操作详解1. 删除单个 Tag2. 批量删除 Tags3. 删除前确认4. 日志记录 高阶优化与问题分析1. 外键约束与误删保护2. 并发删除的冲突处理3. 使用软删除 结合 Django Admin 的实现总结与实践思考 引言 在现代应用开发中,服务和…...
【java】sdkman-java多环境切换工具
#java #env #sdk #lcshand 首先我们来复习一下,可参考我原来的文章: python多个版本的切换可用pyenv nodejs多个版本的切换可用nvm 同样,java多个版本的切换可用sdkman和jenv,我偏重于使用sdkman,因为有时候我也需要…...
11.25c++继承、多态
练习: 编写一个 武器类 class Weapon{int atk; }编写3个武器派生类:短剑,斧头,长剑 class knife{int spd; }class axe{int hp; }class sword{int def; }编写一个英雄类 class Hero{int atk;int def;int spd;int hp; public:所有的…...

STM32F103外部中断配置
一、外部中断 在上一节我们介绍了STM32f103的嵌套向量中断控制器,其中包括中断的使能、失能、中断优先级分组以及中断优先级配置等内容。 1.1 外部中断/事件控制器 在STM32f103支持的60个可屏蔽中断中,有一些比较特殊的中断: 中断编号13 EXTI…...

阿里电商大整合,驶向价值竞争新航道
阿里一出手就是王炸。11月21日,阿里公布了最新动作:将国内和海外电商业务整合,成立新的电商事业群。这是阿里首次将所有电商业务整合到一起,也对电商行业未来发展有着借鉴意义。阿里为何要这么干?未来又将给行业带来哪…...
等保测评在云计算方面的应用讲解
等保测评(信息安全等级保护测评)在云计算方面的应用主要聚焦于如何满足等级保护相关要求,并确保云计算平台及其上运行的业务系统的安全性。以下是主要内容的讲解: 1. 云计算中的等保测评概述 等保测评是在我国网络安全等级保护制…...

QML TableView 实例演示 + 可能遇到的一些问题(Qt_6_5_3)
一、可能遇到的一些问题 Q1:如何禁用拖动? 在TableView下加一句代码即可: interactive: false 补充:这个属性并不专属于TableView,而是一个通用属性。很多Controls下的控件都可以使用,其主要作用就是控…...
SpringBoot(三十九)SpringBoot集成RabbitMQ实现流量削峰添谷
前边我们有具体的学习过RabbitMQ的安装和基本使用的情况。 但是呢,没有演示具体应用到项目中的实例。 这里使用RabbitMQ来实现流量的削峰添谷。 一:添加pom依赖 <!--rabbitmq-需要的 AMQP 依赖--> <dependency><groupId>org.springfr…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...
前端工具库lodash与lodash-es区别详解
lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...