首先安装mysql开发库并配置环境,然后使用MySQL Connector/C API编写c++程序连接数据库;通过mysql_init初始化、mysql_real_connect建立连接,mysql_query执行SQL语句,mysql_store_result获取结果集,mysql_fetch_row遍历数据,最后用mysql_free_result和mysql_close释放资源。

要在C++中连接MySQL数据库,你需要使用MySQL官方提供的C API库——MySQL Connector/C。通过这个库,你可以在C++程序中执行SQL语句、查询数据、插入记录等操作。下面是一个完整的操作教程,帮助你快速实现C++连接MySQL。
1. 安装MySQL开发库
在开始前,确保你的系统已经安装了MySQL服务器和开发库:
- windows:下载并安装 MySQL Installer,选择包含 “MySQL Server” 和 “MySQL Connector/C++” 或 “Development Libraries” 的组件。
- linux(ubuntu/debian):
sudo apt-get install libmysqlclient-dev - macOS(使用Homebrew):
brew install mysql-client
2. 配置编译环境
确保你的编译器能找到MySQL的头文件和库文件。
- 头文件路径一般为:/usr/include/mysql 或 C:Program FilesMySQLMySQL Server X.Xinclude
- 库文件路径:/usr/lib/x86_64-linux-gnu/libmysqlclient.so 或 windows 下的 libmysql.lib
编译时需要链接 -lmysqlclient 库。
立即学习“C++免费学习笔记(深入)”;
示例编译命令(Linux/macOS):
g++ main.cpp -o main -lmysqlclient
3. C++连接MySQL代码示例
以下是一个基本的C++程序,演示如何连接MySQL、执行查询并输出结果。
#include <iostream>
#include <mysql.h>
int main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
// 初始化连接句柄
conn = mysql_init(NULL);
if (!conn) {
std::cerr << “Error: MySQL init failedn”;
return 1;
}
// 连接数据库
if (!mysql_real_connect(conn, “localhost”, “root”, “password“, “testdb”, 3306, NULL, 0)) {
std::cerr << “Error: ” << mysql_error(conn) << std::endl;
mysql_close(conn);
return 1;
}
// 执行查询
if (mysql_query(conn, “select id, name FROM users”)) {
std::cerr << “Query Error: ” << mysql_error(conn) << std::endl;
mysql_close(conn);
return 1;
}
res = mysql_store_result(conn);
if (res == NULL) {
std::cerr << “Store result error: ” << mysql_error(conn) << std::endl;
mysql_close(conn);
return 1;
}
// 遍历结果
while ((row = mysql_fetch_row(res))) {
std::cout << “ID: ” << row[0] << “, Name: ” << row[1] << std::endl;
}
// 释放资源
mysql_free_result(res);
mysql_close(conn);
return 0;
}
4. 关键函数说明
- mysql_init():初始化MySQL连接对象。
- mysql_real_connect():建立与MySQL服务器的实际连接,参数包括主机、用户名、密码、数据库名、端口等。
- mysql_query():执行SQL语句(不能有分号)。
- mysql_store_result():获取查询结果集。
- mysql_fetch_row():逐行读取结果。
- mysql_free_result() 和 mysql_close():释放资源,避免内存泄漏。
注意:如果执行的是INSERT、UPDATE、delete语句,不需要获取结果集,可直接用 mysql_query() 后调用 mysql_affected_rows() 查看影响的行数。
基本上就这些。只要配置好开发环境,使用MySQL C API连接数据库并不复杂,但要注意错误处理和资源释放。


