C 语言通用MySQL 功能增删查改功能.

前提条件:Ubuntu 22.04.4 LTS、MSQL 8数据库

并且已经安装MySQL 8 开发库。如果没有安装,可以查考:C 语言连接MySQL数据库

项目要求:

1、完成MySQL数据库增删改查通用功能封装

2、编辑makefile 文件实现项目动态更新和快速编译

项目结构:

common_mysql.h 通用数据库基础功能

#include <mysql/mysql.h>// 数据库连接
MYSQL* connectDB(const char *ip, const char *username, const char *password, const char *databasenName, unsigned int port);// SQL语句执行
int executeQuery(MYSQL* conn, const char* query);// SQL 语句执行并返回查询结果
void printResults(MYSQL* conn, const char* query);// 关闭数据库连接
int closeConnectDB(MYSQL* conn);

common_mmysql.c 通用数据库基础功能实现

#include "common_mysql.h"
#include <stdio.h>// 数据库连接
MYSQL* connectDB(const char *ip, const char *username, const char *password, const char *databasenName, unsigned int port){MYSQL *conn = mysql_init(NULL);if (conn == NULL) {fprintf(stderr, "mysql_init() 初始化失败\n");return NULL;}if (mysql_real_connect(conn, ip, username, password, databasenName, port, NULL, 0) == NULL) {fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));mysql_close(conn);return NULL;}return conn;
}// SQL 语句执行  0 =执行成功, 1= 执行失败
int executeQuery(MYSQL* conn, const char* query){if (mysql_query(conn, query) != 0) {fprintf(stderr, "mysql_query() 失败: %s\n", mysql_error(conn));return 1;}return 0;
}
// SQL 语句执行并返回执行结果
void printResults(MYSQL* conn, const char* query){if (mysql_query(conn, query) != 0) {fprintf(stderr, "mysql_query() 失败: %s\n", mysql_error(conn));return;}MYSQL_RES *result = mysql_store_result(conn);if (result != NULL) {MYSQL_ROW row;while ((row = mysql_fetch_row(result)) != NULL) {for (int i = 0; i < mysql_num_fields(result); i++) {printf("%s ", row[i] ? row[i] : "NULL");}printf("\n");}mysql_free_result(result);}
}int closeConnectDB(MYSQL* conn){mysql_close(conn);return 0;
}

database_sys.c: 基于数据库通用功能应用

#include<stdio.h>
#include "common_mysql.h"// 常量定义
#define IP "192.168.60.94"
#define USERNAME "root"
#define PASSWORD "123456"
#define DATABASENAME "base"
#define PORT 3306int main(void){// 数据库连接MYSQL* connect = connectDB(IP, USERNAME, PASSWORD,  DATABASENAME, PORT);// 判断数据连接是否为空if(connect == NULL){return 1;}// 执行SQL 语句printResults(connect, "select * from base_user");// 关闭数据库连接closeConnectDB(connect);return 0;
}

MakeFile 自动化编译文件

SOURCES = $(wildcard *.c)  
OBJS = $(patsubst %.c,%.o,$(SOURCES))  
CC = gcc
CFLAGS = -g
TARGET = MySQLDemo# 通过mysql_config 命令查看MySQL 库文件地址
LIB_PATH = -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lzstd -lssl -lcrypto -lresolv -lm$(TARGET) : $(OBJS)$(CC) $(CFLAGS) -o $@ $^ $(LIB_PATH)
$(OBJS): %.o :%.c$(CC) $(CFLAGS) -c $< -o $@clean:  rm -rf $(TARGET) $(OBJS)

Ubuntu 命令控制台,查看MySQL 配置信息:

wz2012@LAPTOP-8R0KHL88:~$ mysql_config
Usage: /usr/bin/mysql_config [OPTIONS]
Compiler: GNU 11.4.0
Options:--cflags         [-I/usr/include/mysql ]--cxxflags       [-I/usr/include/mysql ]--include        [-I/usr/include/mysql]--libs           [-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lzstd -lssl -lcrypto -lresolv -lm]--libs_r         [-L/usr/lib/x86_64-linux-gnu -lmysqlclient -lzstd -lssl -lcrypto -lresolv -lm]--plugindir      [/usr/lib/mysql/plugin]--socket         [/var/run/mysqld/mysqld.sock]--port           [0]--version        [8.0.37]--variable=VAR   VAR is one of:pkgincludedir [/usr/include/mysql]pkglibdir     [/usr/lib/x86_64-linux-gnu]plugindir     [/usr/lib/mysql/plugin]

项目运行结果:

wz2012@LAPTOP-8R0KHL88:/mnt/e/ubuntu_code/数据库管理系统$ ./MySQLDemo
1 31 张三修该 广东省 深圳市 福田区 NULL 
2 19 李四 湖南省 长沙市 开福区 NULL 

至此,收工。

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

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

相关文章

浏览器多次请求同一个文件让其不使用缓存

描述 调用接口&#xff0c;后台根据传入的不同参数对视频进行处理&#xff0c;处理完成的视频存放目录和文件名称完全固定 多次调用该接口并传入不同的参数&#xff0c;该结果视频可能已经变了&#xff0c;但是由于文件路径完全固定&#xff0c;浏览器会直接从缓存中读取&…

智慧公厕的五大好处:深圳光明源全面解析

智慧公厕通过集成现代智能技术和优化管理&#xff0c;显著提升了公共卫生设施的使用体验和管理效率。以下是智慧公厕的五大好处&#xff1a; 提升卫生条件&#xff1a; 自动感应设备&#xff1a;智能感应水龙头、洗手液机和干手器等设备减少了用户对设备的直接接触&#xff0…

【嵌入式开发】STM32+USB的快速开发

目录 一、概述 二、STM32+USB开发流程 2.1 建立新的工程 2.2 系统配置 2.3 时钟配置 2.4 操作系统 2.5 选择USB配置 2.6 在USB_HOST中选择支持的子类(class) 2.7 Clock 配置 三、注意事项 3.1 应用驱动配置 3.2 上电调试基础工作 一、概述 USB作为大家耳熟能详的…

20240621 每日AI必读资讯

&#x1f916;GPT-4 通过图灵测试&#xff01;&#xff01; 研究人员称人们在图灵测试中无法区分 GPT-4 和人类&#xff0c;圣地亚哥加州大学认知科学系的研究人员针对GPT 4复刻了图灵测试。 研究人员招募了500名参与者&#xff0c;与四个代理人&#xff1a;人类、1960年代的…

WebRTC系列实战-自定义RTP中的extension

文章目录 1. 新增extensionsId;1.1 新增自定义extension1.2 准备添加到sdp相关操作1.3 对header长度返回的修改:2. 自定义extesion的写入及注册到extensionMap中2.1 添加到RTPheader中2.2. 大小限制2.3. 是否注册限制2.4. 自定义extension注册需要修改的位置3.接收端解析及注…

龙讯旷腾PWmat计算vdW异质结中热载流子冷却 | 复刻《Phys. Chem. Chem. Phys 》文献

01 NAMD 背景介绍 在各类光物理与光化学过程当中&#xff0c;均会牵涉到激发态载流子动力学过程&#xff0c;诸如电荷弛豫、复合以及输运等等。光激发或者电子注入将初始的平衡状态打破&#xff0c;所产生的热载流子在其演化进程中&#xff0c;会与原子核产生强烈耦合。此时&a…

Xshell 常用命令大全手册

Xshell 常用命令大全手册 文章目录 ls (列出文件)cp (复制文件)mv (移动和重命名文件)rm (删除文件和目录)cd (更改目录)mkdir (建立目录)more、less (查看文件内容)grep (搜索文件内容)vi (编辑文件)rz、sz (文件上传下载)cat (显示文件内容)ps (查看进程)kill (杀掉进程)top…

ios-deploy - Required for installing your app on a physical device with the CLI

ios-deploy 是一个用于在 iOS 设备上安装、调试和运行 iOS 应用的开源工具。如果你正在使用命令行界面&#xff08;CLI&#xff09;来部署 React Native 或其他原生 iOS 应用到物理设备&#xff0c;那么安装 ios-deploy 是必要的。 以下是安装 ios-deploy 的一般步骤&#xff…

环境配置02:CUDA安装

1. CUDA安装 Nvidia官网下载对应版本CUDA Toolkit CUDA Toolkit 12.1 Downloads | NVIDIA Developer CUDA Toolkit 12.5 Downloads | NVIDIA Developer 安装配置步骤参考&#xff1a;配置显卡cuda与配置pytorch - 知乎 (zhihu.com) 2. 根据CUDA版本&#xff0c;安装cudnn …

你才是自己生活的主宰者!——Are we having fun yet

人各有不同&#xff0c;不同的人适合做不同的事。某人喜欢做特定的某件事&#xff0c;这并不意味着你也要去喜欢。判断一件事情是否该去做&#xff0c;不能只凭它能否带来物质利益等&#xff0c;而应看此事是否能够带给我们乐趣并使我们获得满足感。你的工作带给你自豪感和满足…

喜马拉雅项目调整

文章目录 1 频道部分下标旋转频道列表平移 2 渐变按钮搜索放大镜登录按钮径向渐变 3 左右图片缩小左边右边 4 猜你喜欢区域播放按钮和遮罩图片缩放 1 频道部分 下标旋转 .x-header-nav .nav-item:hover .icon-down {transform: rotate(-180deg); }频道列表平移 .channel-lay…

生育是家庭和个人的重要的选择

生育是个人和家庭的重要选择&#xff0c;而国家对于生育政策的制定应该综合考虑多种因素&#xff0c;包括人口结构、经济发展和社会稳定等。同时&#xff0c;我们也应该认识到&#xff0c;男女不应该成为决定一个人是否能够生育的因素。男女在生育中扮演着不同的角色&#xff0…

程序员必须知道!Serverless超强打造国产BAAS

在当今快节奏的软件开发领域&#xff0c;懒人开发者和独立开发者们一直在寻找能够简化开发流程、提高效率的利器。而今&#xff0c;MemFire Cloud以其强大的功能和简便的操作&#xff0c;成为了解决方案中的明星。无需搭建服务&#xff0c;无需开发API接口&#xff0c;你甚至可…

Python画箱线图展示数据分布情况

箱线图&#xff08;Boxplot&#xff09;是一种常用的统计图表&#xff0c;用于展示数据的分布情况。 它由五个统计量组成&#xff1a;最小值、第一四分位数&#xff08;Q1&#xff09;、中位数&#xff08;Q2&#xff09;、第三四分位数&#xff08;Q3&#xff09;和最大值。 …

【PHP】使用$this->request->filter() 方法对请求数据进行过滤处理

在ThinkPHP5&#xff08;TP5&#xff09;框架中&#xff0c;$this->request->filter() 方法用于对请求数据进行过滤处理&#xff0c;以确保数据的安全性和一致性。过滤规则可以是PHP内置的函数、自定义函数&#xff0c;或是ThinkPHP提供的过滤器。下面列举了一些常用的过…

【c语言】字符串函数和内存函数

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C语言 目录 前言 一、字符串函数 1.strlen的使用和模拟实现 2.strcpy的使用和模拟实现 3.strcat的使用和模拟实现 4.strcmp的使用和模拟实现 5.strstr的使…

springboot3多模块实践

先帖下目录结构&#xff0c;直接在idea里面新建就行&#xff0c;删掉多余的文件 子模块的新建 根目录pom文件&#xff0c;注意modules、packaging&#xff0c;dependencyManagement统一管理依赖&#xff0c;子模块添加依赖的时候就不用加版本号 <?xml version"1.0…

SAP_FICO模块-获利能力段新增特征字段

业务背景&#xff1a; 公司有启用获利能力分析功能&#xff0c;有一个销售订单接口&#xff0c;是通过第三方销售订单管理平台推送数据到SAP的&#xff0c;用户希望对接新增一个编号ID到销售订单上&#xff0c;并且可以用KE24/KE30报表查看显示&#xff1b; 对于我这么一个后勤…

python3获取显示器信息并计算出各个显示器是多少寸

1、将宽度和高度从毫米转换为英寸(1英寸 = 25.4毫米)。 2、使用勾股定理计算对角线长度。 运行这个脚本后,将会得到每个显示器的对角线尺寸(以英寸为单位),从而确定显示器的尺寸。 pip install screeninfofrom screeninfo import get_monitors import mathdef get_displ…

高通Android13 WIFI配置国家码

不同国家&#xff0c;WIFI使用的信道是不同的&#xff0c;2.4G一共有14个信道&#xff0c;中国使用1-13信道&#xff0c;美国则使用1-11信道。因此&#xff0c;我们需要指定WIFI的国家码&#xff0c;来确定WIFI在扫描和连接过程中&#xff0c;可以在哪些信道上进行。 设置国家…