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

Ubuntu23.10下解决C语言调用mysql.h问题

Ubuntu23.10下解决C语言调用mysql.h问题

  • 导语
  • 环境准备
  • 问题和解决方案
  • 总结
  • 参考文献

导语

在学习C语言和MySQL的调用的时候遇到包和版本的问题,由于使用的书很老(10年的),因此很多MySQL的包已经过时,在查找很多资料和询问gpt之后得到了解决方案

环境准备

Ubuntu的版本如下,以及使用的是清华源
在这里插入图片描述

问题和解决方案

在使用C语言调用MySQL的时候一直出现找不到mysql.h的相关文件的问题,于是重新清空了mysql进行如下的重新安装(也可以直接开新机安装)

新版本的MySQL已经更改了C语言和mysql.h的连接包,所以需要先安装MySQL Connector/C,具体命令如下

sudo apt-get update
sudo apt-get install libmysqlclient-dev
mysql_config --cflags
mysql_config --libs

后两条命令是检测MySQL Connector/C是否安装完成,由于新版本的MySQL已经不支持书上的写法,所以需要安装这个包,正常应该显示如下图

在这里插入图片描述

之后直接安装服务器即可

sudo apt-get update
sudo apt-get install mysql-server

通过下面的程序验证安装是否成功

#include <stdio.h>
#include <mysql/mysql.h>

int main() {
    MYSQL *conn;
    conn = mysql_init(NULL);

    if (conn == NULL) {
        fprintf(stderr, "mysql_init() failed\n");
        return EXIT_FAILURE;
    }

    if (mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0) == NULL) {
        fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));
        mysql_close(conn);
        return EXIT_FAILURE;
    }

    printf("Connected to the database successfully!\n");

    mysql_close(conn);
    return EXIT_SUCCESS;
}

执行的命令和结果如下

gcc -o test_program test_program.c $(mysql_config --cflags) $(mysql_config --libs)

在这里插入图片描述

之后可以在MySQL中开表来测试一下C语言程序是否能操作对应的表,不过需要写对shell的编译命令

总结

新版的MySQL更改了与C语言的连接方式,但是大部分C语言调用MySQL的操作并没有改变

参考文献

  1. ChatGPT
  2. Linux下MySQL的简单使用

http://www.kler.cn/a/391245.html

相关文章:

  • 《MYSQL45讲》误删数据怎么办
  • 解决表格出现滚动条样式错乱问题
  • 自动驾驶3D目标检测综述(一)
  • 使用docker-compose单点搭建社区版seafile+onlyoffice在线word编辑平台
  • 高性能分布式缓存Redis-高可用部署
  • 软考:去中心化的部署有什么特点
  • arcgis for js实现FeatureLayer图层弹窗展示所有field字段
  • Matlab自学笔记四十一:介绍日期时间型的显示格式:年‘y‘ 月‘M‘ 日‘d‘ 周‘e‘ 时‘h‘ 分‘m‘ 秒‘s‘
  • 科研绘图系列:R语言差异分析双侧柱状图(grouped barplot)
  • PostgreSQL 表文件损坏异常
  • vue的样式知识点
  • 【Windows】任务管理器无法解决的问题?试试`tasklist`和`taskkill`命令
  • IOS开发之Xcode版本选择
  • POI实现根据PPTX模板渲染PPT
  • 攻防世界38-FlatScience-CTFWeb
  • 【Linux】:进程信号(信号概念 信号处理 信号产生)
  • SpringBoot框架的企业资产管理自动化
  • Docker pull镜像故障分析
  • python遇到问题
  • Snort的配置与使用
  • 6 ARM-PEG-TMA可以作为有机合成中间体,参与合成各种复杂的有机化合物和聚合物
  • Leidenアルゴリズムの詳細解説:Pythonによるネットワーク分割の実装
  • Rust学习(三):rust基础Ⅱ
  • 【JAVA】正则表达式中的中括弧
  • 基于MATLAB刻度线表盘识别系统
  • 微擎框架php7.4使用phpexcel导出数据报错修复