Mysql++学习(一)------mysql编译安装
最近在看数据库开发的东西,因为用C++,所以就看看mysql++咯。
mysql提供了c语言的API,还有一些其他语言的connector,虽然以前也写过c语言的mysql连接,增删改查之类的东西,不过都感觉太玩具,最近看新项目,里面的数据库封装就是基于mysql++的,所以顺便学学。
mysql++是对于mysql c API的一个封装,为C++开发者提供像操作STL容器一样方便的操作数据库的一套机制,简单说,就是支持C++的那些“高大上”的机制了呗。所以在C++ 里面用起来会方便不少。心动不如行动,装个试试。
用mysql++开发的第一步,当然是你得有个数据库程序吧,怎么安装mysql这里就不多说了。
然后,去Mysql++官网下个库源码,最新版是3.2.1.然后解压
tar -xvzf mysql++-3.2.1.tar.gz
进入解压后的目录,一大堆文件,惯例------先看README,因为我的是ubuntu,所以就看README-Linux.txt
首先它告诉你,mysql++必须得有mysql c API才能正常工作,mysql c API就需要安装mysqlclient.
ubuntu下面执行下面命令就可以
sudo apt-get install libmysqlclient-dev
其次它告诉你,为了防止动态链接器找不见,最好不要装在非主流的目录下,它建议你放/usr下面
./configure --prefix=/usr
执行建议的命令,它就开始检测文件,配置了。
然后。。。就华丽丽的报错了。- -!
它表示没找见mysqlclient。locate一下,确定是否安装
装了也找不见,那只能告诉它放哪了
./configure --prefix=/usr --with-mysql-lib=/usr/lib/x86_64-linux-gnu
注意:要使用多线程,上面配置别忘了--enable-thread-check(居然默认不支持,坑。。。)
果然好了。然后make。make install(如果权限不够,就sudo make install)。搞定,安装成功!
去example下找个例子测试下呗~
测试首先得有个数据库,执行安装目录下的
./resetdb -s 127.0.0.1 -u [user]-p [password]
就行,如果你安装在非主流目录下,那就通过一个脚本执行
./exrun ./resetdb -s 127.0.0.1 -u [user]-p [password]
如果提示没权限或者用户不存在,那就去数据库里面加用户,给权限(用户最好是你的登录用户,密码最好为空)
mysql -uroot -p[password]
root登录mysql,添加新用户comoon,密码为空
insert into mysql.user (Host,User, Password) values("%", "comoon", "");
给权限(测试数据库是mysql_cpp_data)
grant all privileges on mysql_cpp_data.* to comoon@localhost identified by '';
刷新权限
flush privileges;
再次执行生成测试数据库的脚本,就OK了
进入example目录,编译simple1,发现头文件没找到
locate下,发现在这里
加上Include路径再试,发现又一个没找到。再加。
g++ -o test simple1.cpp -I /usr/include/mysql++/ -I /usr/include/mysql -lmysqlpp
终于搞定。
执行程序,运行成功。打印查询结果.
更多可以查看mysql++ user manual. 地址:http://tangentsoft.net/mysql++/doc/html/userman/
友情提示:如果你固执的选择安装到一个非主流目录下,你的动态链接器可能找不到共享库文件,你需要将你安装目录下的libmysqlpp.so.3.2.1和连接libmysqlpp.so.3拷贝到/usr/local/lib或者/usr/lib下面,然后执行sudo ldconfig.这样链接器就可以找到了。