在 Windows 和 Linux 下使用 C/C++ 连接 MySQL 的详细指南

前言

MySQL 是一种流行的关系型数据库管理系统,广泛应用于各种应用程序中。C/C++ 作为高性能编程语言,常被用于需要与数据库交互的开发中。下面详细讲解如何在 Windows 和 Linux 平台下使用 C/C++ 连接 MySQL 数据库,帮助你快速上手。


准备工作

在开始之前,请确保以下条件已满足:

  1. MySQL 数据库:已安装并运行 MySQL 服务器。

  2. C/C++ 开发环境:Windows 上推荐使用 Visual Studio 或 MinGW,Linux 上推荐使用 gcc/g++。

  3. MySQL C API:这是 MySQL 提供的 C 语言接口,用于连接和操作数据库。

接下来,我们将分平台介绍具体步骤。


Windows 平台

1. 安装 MySQL C API 库

  • 从 MySQL 官方网站 下载 MySQL Connector/C++

  • 安装后,你会得到以下关键文件:

    • libmysql.lib(静态链接库)

    • libmysql.dll(动态链接库)

    • 头文件(如 mysql.h),通常位于安装目录的 include 文件夹中。

2. 配置开发环境

  • 头文件:将 MySQL 的 include 目录添加到项目的包含路径中。

  • 链接库:在项目设置中链接 libmysql.lib。

  • 动态库:将 libmysql.dll 复制到你的可执行文件目录,或添加到系统 PATH 环境变量中。

3. 编写代码

以下是一个简单的 C++ 示例代码,用于连接 MySQL 数据库:

cpp 复制代码
#include <mysql.h>
#include <iostream>

int main() {
    MYSQL* conn = mysql_init(NULL); // 初始化 MySQL 连接对象
    if (!conn) {
        std::cerr << "Initialization failed" << std::endl;
        return 1;
    }

    // 连接到 MySQL 数据库
    if (!mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0)) {
        std::cerr << "Connection error: " << mysql_error(conn) << std::endl;
        mysql_close(conn);
        return 1;
    }

    std::cout << "Successfully connected to MySQL!" << std::endl;
    mysql_close(conn); // 关闭连接
    return 0;
}

4. 编译和运行

  • 如果使用 Visual Studio,在项目属性中配置好包含目录和库目录后,直接构建即可。

  • 如果使用 MinGW,可以用以下命令编译:

g++ -o mysql_test mysql_test.cpp -L"path_to_lib" -lmysql

Linux 平台

1. 安装 MySQL C API 库

  • 在 Linux 上,使用包管理器安装 MySQL 开发包。例如,在 Ubuntu 上运行:

sudo apt-get update

sudo apt-get install libmysqlclient-dev

  • 安装完成后,头文件(mysql.h)通常位于 /usr/include/mysql,库文件位于 /usr/lib。

2. 编写代码

Linux 下的代码与 Windows 类似,以下是一个 C 示例:

cpp 复制代码
#include <mysql/mysql.h>
#include <stdio.h>

int main() {
    MYSQL* conn = mysql_init(NULL); // 初始化 MySQL 连接对象
    if (!conn) {
        fprintf(stderr, "Initialization failed\n");
        return 1;
    }

    // 连接到 MySQL 数据库
    if (!mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0)) {
        fprintf(stderr, "Connection error: %s\n", mysql_error(conn));
        mysql_close(conn);
        return 1;
    }

    printf("Successfully connected to MySQL!\n");
    mysql_close(conn); // 关闭连接
    return 0;
}

3. 编译代码

使用 g++ 或 gcc 编译,并链接 MySQL 库:

g++ -o mysql_test mysql_test.c -lmysqlclient

运行程序:

./mysql_test

注意事项

  • MySQL 服务器状态:确保 MySQL 服务正在运行,可以通过 mysql -u your_username -p 测试连接。

  • 用户名和密码:替换代码中的 your_username、your_password 和 your_database 为实际值。

  • Windows 特定:如果遇到"找不到 DLL"错误,检查 libmysql.dll 是否在可执行文件目录或 PATH 中。

  • Linux 特定:若编译报错"找不到 -lmysqlclient",确认是否已安装 libmysqlclient-dev。


进阶操作

连接成功后,你可以执行以下操作:

  • 执行 SQL 查询:使用 mysql_query() 或 mysql_real_query()。

  • 获取结果集:使用 mysql_store_result() 和 mysql_fetch_row()。

  • 错误处理:始终检查函数返回值并使用 mysql_error() 获取错误信息。

示例(查询表数据):

cpp 复制代码
if (mysql_query(conn, "SELECT * FROM your_table") == 0) {
    MYSQL_RES* result = mysql_store_result(conn);
    MYSQL_ROW row;
    while ((row = mysql_fetch_row(result))) {
        printf("%s\n", row[0]); // 输出第一列数据
    }
    mysql_free_result(result);
}

通过以上步骤,你可以在 Windows 和 Linux 上使用 C/C++ 成功连接 MySQL 数据库。这只是入门,后续你可以深入学习 SQL 操作、事务处理等高级功能。

相关推荐
wuyk5552 小时前
104.C 语言字节对齐:从底层原理到工程实践的完整指南
c语言·开发语言·stm32·单片机·嵌入式硬件
南棱笑笑生8 小时前
20260904实测给飞凌OK3576-C开发板刷入Rockchip原厂的IMG固件【使用飞凌的DTS】切换串口波特率为1.5Mbps
c语言·开发语言·rockchip
tangwangbi9 小时前
Linux 系统配置文件:/etc/profile、~/.bashrc 和 ~/.bash_profile 三者之间的区别与作用
linux·运维·bash
Akiyama_Mio-Kon9 小时前
2026 最新:Dify 本地 Docker 部署完整教程(Windows + Git Bash)
windows·git·docker
蜀道山老天师9 小时前
Shell Bash变量与运算符(含条件测试与流程控制)
linux·运维·bash
Mr.朱鹏10 小时前
Linux 服务器 LVM 根分区在线动态扩容
linux·服务器·数据库
mengge.cloud10 小时前
存储技术基础小白教程
linux·运维·服务器·wpf·存储
霸道流氓气质10 小时前
Spring AI 输出解析器进阶
人工智能·windows·spring
tang7778911 小时前
反爬虫场景下代理IP池的动态扩容与失效IP自动清理方案实现
linux·服务器·网络·爬虫代理·住宅代理ip
新时代牛马12 小时前
Linux 系统调用与IPC 完整篇:从syscall 入口、VDSO 到pipe/shm/futex 选型
linux·运维·服务器