使用boost库链接MySQL数据库

在C++中进行数据库的读写通常需要使用第三方库,因为C++本身并不直接提供数据库操作的标准库。Boost库提供了一些高级的抽象和工具,使得操作更加方便和灵活。

1. 安装 Boost 库
如果你还没有安装 Boost 库,需要先安装。Boost 提供了非常强大和广泛使用的 C++ 库集合,包括 Boost.Asio 和 Boost.Beast。
在 Ubuntu 上可以使用 sudo apt-get install libboost-all-dev 安装 Boost。
在其他系统上可以从 Boost 官网下载源码编译安装。
2. 安装 MySQL C++ Connector:
首先需要安装 MySQL C++ Connector,它是 MySQL 官方提供的 C++ 驱动程序,用于连接和操作 MySQL 数据库。
3. 编写C++代码
在这个示例中,我们假设要创建一个名为 users 的表,包含 username 和 age 字段,并插入一些示例数据。替换代码中的 username、password 和 database_name 为你自己 MySQL 数据库的连接信息。

#include <iostream>
#include <boost/asio.hpp>
#include <boost/beast.hpp>
#include <mysql_driver.h>
#include <mysql_connection.h>

using namespace boost::asio;

int main() {
    try {
        // 创建 Boost.Asio 的 io_context 对象
        boost::asio::io_context io_context;

        // 初始化 MySQL 驱动程序
        sql::mysql::MySQL_Driver* driver = sql::mysql::get_mysql_driver_instance();

        // 建立 MySQL 数据库连接
        std::unique_ptr<sql::Connection> connection(driver->connect("tcp://localhost:3306", "username", "password"));

        // 选择数据库
        connection->setSchema("database_name");

        // 创建表
        std::unique_ptr<sql::Statement> create_statement(connection->createStatement());
        create_statement->execute("CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50), age INT)");

        // 插入数据
        std::unique_ptr<sql::PreparedStatement> insert_statement(connection->prepareStatement("INSERT INTO users (username, age) VALUES (?, ?)"));
        
        // 插入一些示例数据
        insert_statement->setString(1, "Alice");
        insert_statement->setInt(2, 30);
        insert_statement->executeUpdate();
        
        insert_statement->setString(1, "Bob");
        insert_statement->setInt(2, 25);
        insert_statement->executeUpdate();

        // 查询数据
        std::unique_ptr<sql::Statement> select_statement(connection->createStatement());
        std::unique_ptr<sql::ResultSet> result_set(select_statement->executeQuery("SELECT * FROM users"));

        // 处理查询结果
        while (result_set->next()) {
            int id = result_set->getInt("id");
            std::string username = result_set->getString("username");
            int age = result_set->getInt("age");
            std::cout << "ID: " << id << ", Username: " << username << ", Age: " << age << std::endl;
        }

    } catch (std::exception& e) {
        std::cerr << "Exception occurred: " << e.what() << std::endl;
        return 1;
    }

    return 0;
}

编译和运行
编译需要链接 Boost.Asio、Boost.Beast 和 MySQL C++ Connector 库,可以使用如下命令:

g++ -o example example.cpp -lboost_system -lboost_filesystem -lmysqlcppconn
# 运行生成的可执行文件
./example
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值