Ubuntu22 & C++:在CodeServer中连接与使用MySQL

Ubuntu22 & C++:在CodeServer中连接与使用MySQL

来自AI助手的总结
本文介绍了在终端中安装MySQL开发包,并提供了相关代码示例及编译运行步骤。

环境:

打开终端,安装MySQL服务,再安装相关的开发包,如何安装MySQL服务器此处不再赘述,

使用:

dpkg -l | grep libmysqlcppconn
dpkg -l | grep libmysqlclient-dev

查看是否已经安装了相关的开发包:

20260123134344302-image

如果没有任何输出,就是没有安装。

安装开发库:

sudo apt update
sudo apt install -y libmysqlcppconn-dev libmysqlclient-dev

对于第二条命令,如果你知道是什么含义的话,可以自行进行一些修改。参见下方表格

包名 作用 是否需要
mysql-server MySQL 数据库服务器 ✅ 已安装
libmysqlcppconn-dev MySQL Connector/C++ 开发库(头文件+链接库) ❌ 需要安装
libmysqlclient-dev MySQL C API 开发库(头文件+链接库) ❌ 建议安装

再次执行:

dpkg -l | grep libmysqlcppconn
dpkg -l | grep libmysqlclient-dev

可以看到:

20260123134954850-image

说明相关的包已经安装好了。

代码:

main.cpp:

#include <iostream>
#include <mysql_connection.h>
#include <mysql_driver.h>
#include <cppconn/statement.h>
#include <cppconn/resultset.h>
#include <cppconn/exception.h>

int main() {
    try {
        sql::mysql::MySQL_Driver *driver = sql::mysql::get_mysql_driver_instance();
        
        // 连接(用完整格式)
        std::unique_ptr<sql::Connection> con(driver->connect("tcp://127.0.0.1:3306", "your_user_name", "your_password"));
        
        con->setSchema("your_database");
        
        std::unique_ptr<sql::Statement> stmt(con->createStatement());
        
        // 查询 wp_users 表(WordPress用户表)
        std::unique_ptr<sql::ResultSet> res(stmt->executeQuery("SELECT ID, user_login, user_email FROM wp_users"));
        
        int columns = res->getMetaData()->getColumnCount();
        
        while (res->next()) 
        {
            for (int i = 1; i <= columns; ++i) {
                std::cout << res->getString(i) << "\t";
            }
            std::cout << std::endl;
        }
        
        std::cout << "连接成功!查询完成。" << std::endl;
        
    } catch (sql::SQLException &e) {
        std::cerr << "SQL错误: " << e.what() << std::endl;
        std::cerr << "错误代码: " << e.getErrorCode() << std::endl;
        return 1;
    }
    
    return 0;
}

CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(mysql_demo)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 手动查找 MySQL C API
find_path(MYSQL_INCLUDE_DIR mysql.h PATH_SUFFIXES mysql)
find_library(MYSQL_LIBRARY mysqlclient)

# 查找 Connector/C++
find_library(MYSQLCPPCONN_LIBRARY mysqlcppconn)
find_path(MYSQLCPPCONN_INCLUDE_DIR cppconn/connection.h PATH_SUFFIXES mysql-cppconn)

add_executable(${PROJECT_NAME} main.cpp)

# 包含头文件
target_include_directories(${PROJECT_NAME}
    PRIVATE
    ${MYSQL_INCLUDE_DIR}
    ${MYSQLCPPCONN_INCLUDE_DIR}
)

# 链接库
target_link_libraries(${PROJECT_NAME}
    PRIVATE
    ${MYSQLCPPCONN_LIBRARY}
    ${MYSQL_LIBRARY}
    pthread  # MySQL 需要 pthread
)

编译运行代码:

mkdir build && cd build
cmake ..
make
./mysql_demo

20260123174814353-image

 

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容