在C++中使用MySQL连接数据库,可以通过查询执行结果获取查询的返回值。
查询执行结果是一个指向MYSQL_RES类型结构体的指针。该结构体包含了查询的结果集,其中包括了每行数据和列名等信息。
以下是一段示例代码,展示如何执行SQL查询并获取结果:
#include <mysql.h>
#include <iostream>
int main() {
MYSQL mysql;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql, "localhost", "username", "password", "database_name", 0, NULL, 0)) {
std::cout << "Failed to connect to database: Error: " << mysql_error(&mysql) << std::endl;
return -1;
}
if (mysql_query(&mysql, "SELECT id, name FROM my_table")) {
std::cout << "Failed to execute query: Error: " << mysql_error(&mysql) << std::endl;
return -1;
}
MYSQL_RES* result = mysql_store_result(&mysql);
if (result == NULL) {
std::cout << "Failed to get query result: Error: " << mysql_error(&mysql) << std::endl;
return -1;
}
int num_fields = mysql_num_fields(result);
MYSQL_ROW row;
while ((row = mysql_fetch_row(result))) {
for(int i = 0; i < num_fields; i++) {
std::cout << row[i] << "\t";
}
std::cout << std::endl;
}
mysql_free_result(result);
mysql_close(&mysql);
return 0;
}
上述代码中,首先创建了一个MYSQL类型变量,并初始化它。然后使用mysql_real_connect函数连接到数据库。
接着,执行了一条SQL查询语句,并通过mysql_store_result函数将结果保存在一个MYSQL_RES类型结构体中。如果返回值为NULL,则说明获取结果失败。
通过mysql_num_fields函数获取结果集的列数,然后使用mysql_fetch_row函数遍历每一行数据。每一行的数据以数组形式返回,数组的长度即为列数。
最后,记得调用mysql_free_result函数释放内存并关闭MySQL连接。




