在mysql源码文件夹下创建MySQLConfig.cmake文件
set(MySQL_INCLUDE_DIRS /opt/mysql/include)
file(GLOB MySQL_LIBS /opt/mysql/lib/lib*.so)
CMakeLists.txt:
cmake_minimum_required(VERSION 3.0) # CMake最低版本要求,低于2.6的构建过程会被终止set(CMAKE_CXX_STANDARD 14) #opencv4以上加此句
set(CMAKE_CXX_STANDARD 14)
project(mysql_test) # 定义工程名称
find_package(MySQL REQUIRED)
include_directories(
${MySQL_INCLUDE_DIRS}
)
add_executable(mysql_test src/main.cpp) # 生成一个叫 cmake_test的可执行文件,其中可执行源文件路径为 src/main.cpp
target_link_libraries( cmake_test
${MySQL_LIBS}) # 链接库
main.cpp
#include <mysql/mysql.h>
#include <iostream>
int main() {
// 初始化MySQL连接
MYSQL mysql;
mysql_init(&mysql);
// 连接到MySQL服务器
if (!mysql_real_connect(&mysql, "localhost", "root", "passwd", "sys", 0, "/home/.mysql/run/mysql.sock", 0))
{
std::cerr << "Failed to connect to database: " << mysql_error(&mysql) << std::endl;
return 1;
}
// 执行查询
if (mysql_query(&mysql, "SELECT * FROM sys_config"))
{
std::cerr << "Failed to execute query: " << mysql_error(&mysql) << std::endl;
return 1;
}
// 获取查询结果
MYSQL_RES* result = mysql_store_result(&mysql);
if (result == NULL)
{
std::cerr << "Failed to get result: " << 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] << " ";
}
std::cout << std::endl;
}
// 释放结果集
mysql_free_result(result);
// 关闭MySQL连接
mysql_close(&mysql);
return 0;
}