最近想尝试一下使用c++连接mysql数据库。使用封装过后的mysql库mysql++访问mysql数据库更加简单,下述讲述的是如何在osx上搭建连接mysql的环境。
首先需要安装mysql++,感谢万能的brew install ,只需要一条命令!
brew install mysql++
因为我之前已经使用brew安装了mysql数据库,mysql++库的链接与mysql有冲突,在安装之前需要使用unlink命令解除mysql的链接。
brew unlink mysql
在安装完mysql连接库之后,此时执行命令
mysql -u root
不能连接到mysql数据库,此时只需要修改环境变量,将mysql程序所在文件添加到环境变量即可。
在 ~/.bashrc中添加这一句(此处需要根据实际情况填写):
export PATH=$PATH:/usr/local/Cellar/mysql/5.7.11/bin
果然又可以了!
此时,千万不要傻乎乎的首先unlink mysql-connector-c, 然后link mysql,虽然这样操作可以访问mysql client,但是执行编译的时候,会报错!
提示找不到:mysql_version.h 等一系列头文件......
接下来上一个连接mysql的小demo吧!
#include <iostream> #include <mysql++/mysql++.h> using namespace mysqlpp; using namespace std ; int main(){ try{ Connection conn(false); conn.connect("stock","localhost","root"); Query query=conn.query(); }catch (BadQuery er){ cout<<"Error:"<<er.what()<<endl; return -1; }catch (const BadConversion &er){ cout << "Conversion error: " << er.what() << endl << " retrieved data size: " << er.retrieved << ", actual size: " << er.actual_size << endl; return -1; }catch (const Exception &er){ // Catch-all for any other MySQL++ exceptions cout << "Error: " << er.what() << endl; return -1; } cout<<"no problem"<<endl; return 0; }
编译命令:
g++ main.cpp -o test -lmysqlpp -lmysqlclient
执行:
附上使用cmake生成项目的CMakeLists.txt文件,重点在于利用方法target_link_libraries来新增链接参数。
cmake_minimum_required(VERSION 2.8) project (test) add_executable(test main.cpp) target_link_libraries(test mysqlpp mysqlclient)
执行:
cmake . make ./test
have fun!