一、安裝mysql java
下載安裝mysql,原來安裝過mysql,後來卸載了,再次安裝時,在mysql配置工具的最後一步時,老是沒法啓動服務,錯誤提示爲「could not start the service mysql error:0」,解決方法是刪除安裝目錄的殘留文件,中止mysql服務,將C:\ProgramData中mysql的數據文件轉移或刪除,重啓,再次安裝就能夠了。 mysql
二、mysql++準備知識
這裏有一些迷惑,在mySql官方網站提供了一個mysql connector/c++的API,還有一個使用很普遍的mysq++。Mysql++的官方網站中有mysql++的做者寫的Mysql++和mysql connector/c++的比較,大體以下:
Connector/C++ 是由mysql公司開發的新的mysql c API的封裝庫, 相比之下,mysql++的開發歷史比較悠久……connector/c++是一個java風格的API,mysql++則使用原生的C++標準庫,java程序員可能比較喜歡connector/c++,最後仍是強調了一下mysql++是強大可靠的。 ios
三、下載安裝mysql++ c++
下載並解壓mysql++到C:/mysql++-3.1.0,下載地址:http://tangentsoft.net/mysql++/ 程序員
四、編譯mysql++
打開C:/mysql++-3.1.0下的Makefile.mingw文件(注意擴展名)。經過「查找,替換」方法,將全部「C:\Program Files\MySQL\MySQL Server 5.1」 替換爲「c:\Program Files\MySQL\MySQL Server 5.5」,這裏第40行和115行有一個換行,353行若是替換時選擇了全字匹配,將有個5.1存在,總之替換完了用查找再看看哪裏還有5.1字樣,若是有,還須要修改成正確的路徑。
運行cmd,進入mysql的安裝目錄「c:\Program Files\MySQL\MySQL Server 5.5\lib\opt「;
運行:dlltool -k -d C:\ mysql++-3.1.0\libmysqlclient.def -l libmysqlclient.a;執行成功後在 C:\Program Files\MySQL\MySQL Server 5.5\lib\opt\文件夾中將生成「libmysqlclient.a」文件; sql
一樣運行:dlltool -k -d C:\ mysql++-3.1.0\libmysqlclient.def -l libmysqlclient.lib;執行成功後在 C:\Program Files\MySQL\MySQL Server 5.5\lib\opt\文件夾中將生成「libmysqlclient.lib」文件。 數據庫
cmd到mysql++-3.1.0中執行:mingw32-make -f Makefile.mingw;執行後在目錄中將生成不少.o和.od文件,這個不用管它,也能夠刪除,用命令mingw32-make -f Makefile.mingw clean能夠自動清除編譯過程當中生成的中間文件。
但我編譯到這裏,折騰了5遍約8個小時,老是會有錯誤。Google好久沒有找到答案,有可能mysql++-3.1.0不支持mysql5.5,有哪位朋友知道是什麼緣由還望告知。 工具
一番折騰,仍是沒有成功。很奇怪,我有點懷疑是mysql版本的問題了。明天接着折騰。 測試
今天把mysql5.5.5卸載了,安裝老版本mysql-essential-5.1.58-win32,一路next比較順利。 網站
在上一次折騰mysql++的第4步,當生成了libmysqlclient.a時,增長如下步驟:
1)將 libmysqlclient.a 拷貝至 c:\mysql++-3.1.0下;
2)在c:\mysql++-3.1.0 下打開 mysql++.bkl,替換相關路徑(這一步不知道有什麼用,記錄在這裏備用一下);
執行:mingw32-make -f Makefile.mingw,這裏終於在mysql++的目錄中生成我須要的mysqlpp.dll(3890 kb),點擊install.hta文件,選擇將庫和include文件存放的路徑,我選擇了E盤。這樣在E盤會有新的文件夾----mysql++,裏面有兩個文件夾「include」和「lib」,include文件夾裏面都是頭文件,lib文件夾中有libmysqlpp.a和mysqlpp.dll,能夠寫代碼進行測試了。
這期間,還須要根據不一樣的IDE進行相關的配置,我使用的是codeblocks10.05版,在全局環境變量中,增長了mysql和mysqlpp的環境變量:
1)mysql:
base:C:\Program Files\MySQL\MySQL Server 5.1
include:C:\Program Files\MySQL\MySQL Server 5.1\include
lib:C:\Program Files\MySQL\MySQL Server 5.1\lib
2)mysqlpp:
base:E:\MySQL++
include:E:\MySQL++\include
lib:E:\MySQL++\lib
新建一個console,代碼以下:
#include <iostream> #include <string> #include <cstdlib> #include <mysql++.h> using namespace std; int main() { mysqlpp::Connection con(false); con.set_option(new mysqlpp::SetCharsetNameOption("gbk")); cout << "請輸入數據庫(root用戶)鏈接密碼:"; string pwd; getline(cin, pwd); if (!con.connect("mytable", "localhost", "root", pwd.c_str())) { cout << "沒法鏈接,請檢查密碼是否正確!" << endl; return -1; } else { cout << "shit.終於連上了。" << endl; mysqlpp::Query query = con.query("select mycol from firsttable"); if (mysqlpp::StoreQueryResult res = query.store()) { cout << "We have:" << endl; mysqlpp::StoreQueryResult::const_iterator it; for (it = res.begin(); it != res.end(); ++it) { mysqlpp::Row row = *it; cout << '\t' << row["mycol"] << endl; // 或者使用列索引 //cout << '\t' << row[0] << endl; } } else { cerr << "Failed to get mycol list: " << query.error() << endl; return 1; } } return 0; }
編譯過程很順利,不過運行時提示缺乏libMYSQL.dll文件,這個文件在mysql的安裝目錄中(C:\Program Files\MySQL\MySQL Server 5.1\bin),拷貝一個到build文件夾,如debug或release,再運行,OK了。
這裏還有一個小技巧,在win7中,當前文件夾使用shift+反鍵,在快捷菜單中點擊「在此處打開命令窗口」便可打開命令窗口,不用在cd....的,比較方便。