Cmake如何实现与Mysql的完美连接(Cmake连接mysql)

CMake如何实现与MySQL的完美连接

在开发中,很多情况下需要使用到MySQL来进行数据的存储和操作,而CMake在项目构建的过程中也扮演着重要的角色。如何实现CMake与MySQL的完美连接呢?本文将针对此话题进行详细解答。

一、安装MySQL

在开始前,我们需要先安装MySQL。可以通过以下命令在Ubuntu系统上安装(需要提前安装好apt-get):

sudo apt-get update

sudo apt-get install mysql-server

安装完成后,我们需要登录MySQL并创建一个新用户,并将其授权以便我们在之后的操作中可以通过该用户进行操作,具体命令如下:

mysql -u root -p #用root账户登录mysql

GRANT ALL PRIVILEGES ON *.* TO ‘test_user’@’localhost’ IDENTIFIED BY ‘password’; #授权,其中test_user为用户名,password为用户密码

二、CMake连接MySQL

接下来,我们需要在CMake中连接MySQL。我们需要使用以下命令安装必要的库:

sudo apt-get install libmysqlclient-dev

在CMakeLists.txt文件中,我们需要添加如下代码:

FIND_PACKAGE( MySQL REQUIRED )

IF( MYSQL_FOUND )

INCLUDE_DIRECTORIES( ${MYSQL_INCLUDE_DIR} )

SET( LIBS ${LIBS} ${MYSQL_LIBRARIES} )

ENDIF( MYSQL_FOUND )

这段代码用来查找MySQL并将其包含,同时将MySQL相关的库文件加入LIBS变量中。

在使用MySQL前,我们需要创建一个数据库连接。以下是一个示例:

#include

#include

int mn(int argc, char* argv[])

{

MYSQL mysql;

if(!mysql_init(&mysql))

{

std::cerr

return EXIT_FLURE;

}

if(!mysql_real_connect(&mysql, “localhost”, “test_user”, “password”, “test_db”, 0, nullptr, 0))

{

std::cerr

mysql_close(&mysql);

return EXIT_FLURE;

}

// 使用mysql进行数据库操作

mysql_close(&mysql);

return EXIT_SUCCESS;

}

以上示例代码中,我们使用了mysql_init函数来初始化MYSQL对象,并使用mysql_real_connect函数来连接到MySQL服务器。其中,localhost为MySQL服务器地址,test_user为用户,password为密码,test_db为要进行操作的数据库。

三、示例代码

为了方便大家上手使用,下面是一个简单的示例代码,用来演示如何使用CMake来连接MySQL并进行简单的数据库操作。

CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)

project(mysql_demo)

SET(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -std=c++11”)

FIND_PACKAGE( MySQL REQUIRED )

IF( MYSQL_FOUND )

INCLUDE_DIRECTORIES( ${MYSQL_INCLUDE_DIR} )

SET( LIBS ${LIBS} ${MYSQL_LIBRARIES} )

ENDIF( MYSQL_FOUND )

add_executable(mysql_demo mn.cpp)

target_link_libraries(mysql_demo ${LIBS})

mn.cpp:

#include

#include

#include

int mn(int argc, char* argv[])

{

MYSQL mysql;

if(!mysql_init(&mysql))

{

std::cerr

return EXIT_FLURE;

}

if(!mysql_real_connect(&mysql, “localhost”, “testuser”, “testpassword”, “test_db”, 0, nullptr, 0))

{

std::cerr

mysql_close(&mysql);

return EXIT_FLURE;

}

std::string query_str = “CREATE TABLE IF NOT EXISTS `user` ( \

`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,\

`username` VARCHAR(255) NOT NULL,\

`password` VARCHAR(255) NOT NULL,\

PRIMARY KEY (`id`)\

) ENGINE=InnoDB;”;

if(mysql_query(&mysql, query_str.c_str()))

{

std::cerr

mysql_close(&mysql);

return EXIT_FLURE;

}

std::cout

mysql_close(&mysql);

return EXIT_SUCCESS;

}

以上代码演示了如何使用CMake连接MySQL并创建名为user的表,其中包含id、username和password三个字段。需要注意的是,在使用mysql_query函数进行数据库操作时,需要将SQL语句转换为C字符串类型(c_str())。

总结

本文介绍了如何在CMake中连接MySQL,并提供了一个简单的示例代码供大家参考。在实际开发中,我们也可以通过类似的方法实现更多的MySQL操作。希望本文能够为大家提供一些帮助。


数据运维技术 » Cmake如何实现与Mysql的完美连接(Cmake连接mysql)