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

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
请按任意键继续. . .

在这里插入图片描述

相关链接

  1. SQL:Windows下C/C++连接访问MySQL数据库(亲测有效!一遍过!)

相关文章:

C语言:C语言实现对MySQL数据库表增删改查功能

基础DOME可以用于学习借鉴&#xff1b; 具体代码 #include <stdio.h> #include <mysql.h> // mysql 文件&#xff0c;如果配置ok就可以直接包含这个文件//宏定义 连接MySQL必要参数 #define SERVER "localhost" //或 127.0.0.1 #define USER "roo…...

C++ 二叉搜索树(Binary Search Tree, BST)深度解析与全面指南:从基础概念到高级应用、算法优化及实战案例

&#x1f31f;个人主页&#xff1a;落叶 &#x1f31f;当前专栏: C专栏 目录 ⼆叉搜索树的概念 ⼆叉搜索树的性能分析 ⼆叉搜索树的插⼊ ⼆叉搜索树的查找 二叉搜索树中序遍历 ⼆叉搜索树的删除 cur的左节点为空的情况 cur的右节点为空的情况 左&#xff0c;右节点都不为…...

刷题日常(移动零,盛最多水的容器,三数之和,无重复字符的最长子串)

移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 俩种情况&#xff1a; 1.当nums[i]为0的时候 直接i 2.当nums[i]不为0的时候 此时 …...

深入了解决策树---机器学习中的经典算法

引言 决策树&#xff08;Decision Tree&#xff09;是一种重要的机器学习模型&#xff0c;以直观的分层决策方式和简单高效的特点成为分类和回归任务中广泛应用的工具。作为解释性和透明性强的算法&#xff0c;决策树不仅适用于小规模数据&#xff0c;也可作为复杂模型的基石&…...

Elasticsearch对于大数据量(上亿量级)的聚合如何实现?

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

深度学习模型:循环神经网络(RNN)

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

前端---HTML(一)

HTML_网络的三大基石和html普通文本标签 1.我们要访问网络&#xff0c;需不需要知道&#xff0c;网络上的东西在哪&#xff1f; 为什么我们写&#xff0c;www.baidu.com就能找到百度了呢&#xff1f; 我一拼ping www.baidu.com 就拼到了ip地址&#xff1a; [119.75.218.70]…...

SQL 复杂查询

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

银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法

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

抓包之使用chrome的network面板

写在前面 本文看下工作中非常非常常用的chrome的network面板功能。 官方介绍&#xff1a;地址。 1&#xff1a;前置 1.1&#xff1a;打开 右键-》检查&#xff0c;或者F12。 1.2&#xff1a;组成部分 2&#xff1a;控制器常用功能 详细如下图&#xff1a; 接着我们挑选其…...

避坑ffmpeg直接获取视频fps不准确

最近在做视频相关的任务&#xff0c;调试代码发现一个非常坑的点&#xff0c;就是直接用ffmpeg获取fps是有很大误差的&#xff0c;如下&#xff1a; # GPT4o generated import ffmpegprobe ffmpeg.probe(video_path, v"error", select_streams"v:0", sho…...

大数据新视界 -- 大数据大厂之 Hive 函数库:丰富函数助力数据处理(上)(11/ 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

深入解析 Django 中数据删除的最佳实践:以动态管理镜像版本为例

文章目录 引言场景与模型设计场景描述 删除操作详解1. 删除单个 Tag2. 批量删除 Tags3. 删除前确认4. 日志记录 高阶优化与问题分析1. 外键约束与误删保护2. 并发删除的冲突处理3. 使用软删除 结合 Django Admin 的实现总结与实践思考 引言 在现代应用开发中&#xff0c;服务和…...

【java】sdkman-java多环境切换工具

#java #env #sdk #lcshand 首先我们来复习一下&#xff0c;可参考我原来的文章&#xff1a; python多个版本的切换可用pyenv nodejs多个版本的切换可用nvm 同样&#xff0c;java多个版本的切换可用sdkman和jenv&#xff0c;我偏重于使用sdkman&#xff0c;因为有时候我也需要…...

11.25c++继承、多态

练习&#xff1a; 编写一个 武器类 class Weapon{int atk; }编写3个武器派生类&#xff1a;短剑&#xff0c;斧头&#xff0c;长剑 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的嵌套向量中断控制器&#xff0c;其中包括中断的使能、失能、中断优先级分组以及中断优先级配置等内容。 1.1 外部中断/事件控制器 在STM32f103支持的60个可屏蔽中断中&#xff0c;有一些比较特殊的中断&#xff1a; 中断编号13 EXTI…...

阿里电商大整合,驶向价值竞争新航道

阿里一出手就是王炸。11月21日&#xff0c;阿里公布了最新动作&#xff1a;将国内和海外电商业务整合&#xff0c;成立新的电商事业群。这是阿里首次将所有电商业务整合到一起&#xff0c;也对电商行业未来发展有着借鉴意义。阿里为何要这么干&#xff1f;未来又将给行业带来哪…...

等保测评在云计算方面的应用讲解

等保测评&#xff08;信息安全等级保护测评&#xff09;在云计算方面的应用主要聚焦于如何满足等级保护相关要求&#xff0c;并确保云计算平台及其上运行的业务系统的安全性。以下是主要内容的讲解&#xff1a; 1. 云计算中的等保测评概述 等保测评是在我国网络安全等级保护制…...

QML TableView 实例演示 + 可能遇到的一些问题(Qt_6_5_3)

一、可能遇到的一些问题 Q1&#xff1a;如何禁用拖动&#xff1f; 在TableView下加一句代码即可&#xff1a; interactive: false 补充&#xff1a;这个属性并不专属于TableView&#xff0c;而是一个通用属性。很多Controls下的控件都可以使用&#xff0c;其主要作用就是控…...

SpringBoot(三十九)SpringBoot集成RabbitMQ实现流量削峰添谷

前边我们有具体的学习过RabbitMQ的安装和基本使用的情况。 但是呢&#xff0c;没有演示具体应用到项目中的实例。 这里使用RabbitMQ来实现流量的削峰添谷。 一&#xff1a;添加pom依赖 <!--rabbitmq-需要的 AMQP 依赖--> <dependency><groupId>org.springfr…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...