在C++中使用MySQL客户端程序可以通过MySQL C API实现。MySQL C API是一组C语言库函数,用于访问MySQL数据库。Boost库可以提供一些简单但功能强大的工具,以便读取和处理MySQL C API中的输出。
#include <mysql/mysql.h>
#include <boost/foreach.hpp>
// 定义一个回调函数来处理结果集
int result_callback(void *param, int columns, char **data, char **columns_names)
{
// 使用BOOST_FOREACH循环来输出列和列名称
BOOST_FOREACH(const char *column_name, columns_names)
{
std::cout << column_name << ": ";
}
putchar('\n');
BOOST_FOREACH(const char *column_data, data)
{
std::cout << column_data << " ";
}
putchar('\n');
return 0;
}
int main()
{
MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");
if (!mysql_real_connect(&mysql, "localhost", "username", "password", "database", 0, NULL, 0))
{
puts("Failed to connect to database!");
exit(1);
}
else
{
puts("Connected to database successfully!");
}
mysql_query(&mysql, "SELECT * FROM users");
MYSQL_RES *result = mysql_store_result(&mysql);
// 使用BOOST_FOREACH循环来处理结果集
BOOST_FOREACH(MYSQL_ROW row, result)
{
mysql_field_seek(result, 0);
mysql_field_seek(result, 1);
mysql_field_seek(result, 2);
int id = atoi(mysql_fetch_row(result)[0]);
std::string username(mysql_fetch_row(result)[1]);
std::string password(mysql_fetch_row(result)[2]);
std::cout << "ID: " << id << ", Username: " << username << ", Password: " << password << std::endl;
}
mysql_free_result(result);
mysql_close(&mysql);
return 0;
}
以上代码展示了如何在C++中使用MySQL C API和Boost库访问MySQL数据库并处理结果集,可以按照需求进行修改和扩展,从而实现更加复杂和丰富的功能。