C++连接MySQL的方法(直接调用C-API)
简介
MySQL是一个流行的开源数据库管理系统,C++程序可以使用MySQL C API来连接MySQL数据库,进行数据的增删改查操作。C++连接MySQL的方法主要有两种:直接调用C-API和使用第三方库(如MySQL++、ODBC等)。
本文主要介绍直接调用C-API的方法,包括以下主要步骤:
- 安装MySQL C API库文件
- 包含头文件
- 连接MySQL服务器
- 执行SQL语句
- 处理查询结果
- 断开连接
安装MySQL C API库文件
如果还未安装MySQL C API库文件,可以通过以下方式安装:
在Ubuntu系列(如Ubuntu、Debian)上:
sudo apt-get install libmysqlclient-dev
在RedHat系列(如CentOS、Fedora、RedHat)上:
sudo yum install mysql-devel
包含头文件
在C++程序中,要使用MySQL C API,需要包含mysql.h头文件。
#include <mysql.h>
连接MySQL服务器
连接MySQL服务器的主要步骤如下:
- 创建MYSQL结构体变量
- 初始化MYSQL结构体变量
- 连接MySQL服务器
以下是连接MySQL服务器的C++代码示例:
MYSQL mysql; // MYSQL结构体变量
mysql_init(&mysql); // 初始化MYSQL结构体变量
const char* host = "localhost"; // 数据库所在主机名或IP地址
const char* user = "root"; // 数据库用户名
const char* password = "123456"; // 数据库密码
const char* database = "test"; // 数据库名称
if (mysql_real_connect(&mysql, host, user, password, database, 0, NULL, 0)) {
// 连接成功
printf("Connect MySQL server successfully!\n");
} else {
// 连接失败
printf("Connect MySQL server failed!\n");
printf("Error message: %s\n", mysql_error(&mysql));
}
执行SQL语句
在连接MySQL服务器成功后,C++程序可以通过mysql_query()函数执行SQL语句。常见的SQL语句包括SELECT、INSERT、UPDATE、DELETE等。
以下是执行SQL语句的C++代码示例:
const char* sql = "SELECT * FROM student"; // SQL语句
if (mysql_query(&mysql, sql) == 0) {
// SQL语句执行成功
printf("Execute SQL statement successfully!\n");
} else {
// SQL语句执行失败
printf("Execute SQL statement failed!\n");
printf("Error message: %s\n", mysql_error(&mysql));
}
处理查询结果
在执行SELECT语句后,C++程序可以通过mysql_store_result()和mysql_fetch_row()函数来处理查询结果。其中,mysql_store_result()函数将查询结果保存在MYSQL_RES结构体变量中,mysql_fetch_row()函数可以获取查询结果的一行。
以下是处理查询结果的C++代码示例:
MYSQL_RES* result; // 查询结果
result = mysql_store_result(&mysql); // 将查询结果保存在MYSQL_RES结构体变量中
if (result == NULL) {
// 函数执行失败
printf("Get query result failed!\n");
printf("Error message: %s\n", mysql_error(&mysql));
} else {
// 函数执行成功
MYSQL_ROW row; // 查询结果的一行
while ((row = mysql_fetch_row(result))) {
printf("Student ID: %s\n", row[0]);
printf("Student Name: %s\n", row[1]);
printf("Student Age: %s\n", row[2]);
}
mysql_free_result(result); // 释放MYSQL_RES结构体变量所占用的内存
}
断开连接
最后,在C++程序结束前,需要通过mysql_close()函数断开与MySQL服务器的连接。
以下是断开连接的C++代码示例:
mysql_close(&mysql); // 断开连接
示例说明
示例一:插入数据
下面是一个C++程序,用于向MySQL数据库插入一条记录:
#include <mysql.h>
#include <cstdio>
int main() {
MYSQL mysql; // MYSQL结构体变量
mysql_init(&mysql); // 初始化MYSQL结构体变量
const char* host = "localhost"; // 数据库所在主机名或IP地址
const char* user = "root"; // 数据库用户名
const char* password = "123456"; // 数据库密码
const char* database = "test"; // 数据库名称
if (!mysql_real_connect(&mysql, host, user, password, database, 0, NULL, 0)) {
// 连接失败
printf("Connect MySQL server failed!\n");
printf("Error message: %s\n", mysql_error(&mysql));
return -1;
}
const char* sql = "INSERT INTO student (id, name, age) VALUES (1, 'Tom', 18)"; // SQL语句
if (mysql_query(&mysql, sql) == 0) {
// SQL语句执行成功
printf("Insert data successfully!\n");
} else {
// SQL语句执行失败
printf("Insert data failed!\n");
printf("Error message: %s\n", mysql_error(&mysql));
}
mysql_close(&mysql); // 断开连接
return 0;
}
示例二:查询数据
下面是一个C++程序,用于从MySQL数据库中查询数据:
#include <mysql.h>
#include <cstdio>
int main() {
MYSQL mysql; // MYSQL结构体变量
mysql_init(&mysql); // 初始化MYSQL结构体变量
const char* host = "localhost"; // 数据库所在主机名或IP地址
const char* user = "root"; // 数据库用户名
const char* password = "123456"; // 数据库密码
const char* database = "test"; // 数据库名称
if (!mysql_real_connect(&mysql, host, user, password, database, 0, NULL, 0)) {
// 连接失败
printf("Connect MySQL server failed!\n");
printf("Error message: %s\n", mysql_error(&mysql));
return -1;
}
const char* sql = "SELECT * FROM student"; // SQL语句
if (mysql_query(&mysql, sql) == 0) {
// SQL语句执行成功
printf("Execute SQL statement successfully!\n");
MYSQL_RES* result; // 查询结果
result = mysql_store_result(&mysql); // 将查询结果保存在MYSQL_RES结构体变量中
if (result == NULL) {
// 函数执行失败
printf("Get query result failed!\n");
printf("Error message: %s\n", mysql_error(&mysql));
} else {
// 函数执行成功
MYSQL_ROW row; // 查询结果的一行
while ((row = mysql_fetch_row(result))) {
printf("Student ID: %s\n", row[0]);
printf("Student Name: %s\n", row[1]);
printf("Student Age: %s\n", row[2]);
}
mysql_free_result(result); // 释放MYSQL_RES结构体变量所占用的内存
}
} else {
// SQL语句执行失败
printf("Execute SQL statement failed!\n");
printf("Error message: %s\n", mysql_error(&mysql));
}
mysql_close(&mysql); // 断开连接
return 0;
}
以上就是C++连接MySQL的方法(直接调用C-API)的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++连接mysql的方法(直接调用C-API) - Python技术站