最近在看數據庫開發的東西,因為用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.這樣鏈接器就可以找到了。
