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操作。希望本文能够为大家提供一些帮助。