Qt數(shù)據(jù)庫之添加MySQL驅(qū)動插件
現(xiàn)在可用的數(shù)據(jù)庫驅(qū)動只有3種,在Qt中,我們需要自己編譯其他數(shù)據(jù)庫驅(qū)動的代碼,讓它們以插件的形式來使用。下面我們就以現(xiàn)在比較流行的MySQL數(shù)據(jù)庫為例,說明一下怎樣在Qt Creator中添加數(shù)據(jù)庫驅(qū)動插件。在講述之前,我們先看一下Qt Creator中數(shù)據(jù)庫的插件到底放在哪里。
我們進入Qt Creator的安裝目錄,然后進入相對應的文件夾下,比方我這里是
- D:\Qt\2010.02.1\qt\plugins\sqldrivers
在這里我們可以看見幾個文件,如下圖:
<根據(jù)名字中的關(guān)鍵字,我們可以判斷出這就是ODBC數(shù)據(jù)庫和SQLite數(shù)據(jù)庫的驅(qū)動插件。下面我們編譯好MySQL數(shù)據(jù)庫驅(qū)動后,也會在這里出現(xiàn)相對應的文件。
首先:我們查看怎樣安裝數(shù)據(jù)庫插件。
我們打開Qt Creator,在幫助中搜索SQL Database Drivers關(guān)鍵字。這里列出了編譯Qt支持的所有數(shù)據(jù)庫的驅(qū)動的方法。
我們下拉到在windows上編譯QMYSQL數(shù)據(jù)庫插件的部分,其內(nèi)容如下:
這里詳細介紹了整個編譯的過程,其可以分為以下幾步:
第一,下載MySQL的安裝程序,在安裝時選擇定制安裝,這時選中安裝Libs和Include文件。安裝位置可以是C:\MySQL 。
注意:安裝位置不建議改動,因為下面進行編譯的命令中使用了安裝路徑,如果改動,那么下面也要進行相應改動。
第二,進行編譯。我們按照實際情況輸入的命令如下。
- cd %QTDIR%\src\plugins\sqldrivers\mysql
- qmake “INCLUDEPATH+=C:\MySQL\include” “LIBS+=C:\MySQL\lib\opt\libmysql.lib” mysql.pro
- mingw32-make
注意:在上面的命令中qmake之后如果加上“-o Makefile”選項,那么這個插件只能在以release模式編譯程序時才能使用,所以我們上面沒有加這個選項。
然后:我們按照上面的過程進行相應操作。
1.我們先下載MySQL的安裝文件。
我們可以到MySQL的官方主頁 http://www.mysql.com 進行下載最新的MySQL的windows版本,現(xiàn)在具體的下載頁面地址為:
http://www.mysql.com/downloads/mirror.php?id=383405#mirrors
我們不進行注冊,直接點擊其下面的
- No thanks, just take me to the downloads!
可以在其中選擇一個鏡像網(wǎng)點進行下載,我使用的是Asia下的最后一個,就是臺灣的鏡像網(wǎng)點下載的。
下載到的文件名為:mysql-essential-5.1.44-win32 ,其中的win32表明是32位的windows系統(tǒng),這一點一定要注意。文件大小為40M左右。
當然你也可以到中文網(wǎng)站上進行下載:http://www.mysql.cn/,隨便下一個windows的版本就行。
2.安裝軟件。
我們選擇定制安裝Custom。
然后選中安裝Include文件和Lib文件。
我們將安裝路徑更改為:C:\MySQL 。
最終的界面如下。
安裝完成后,我們不進行任何操作,所以將兩個選項都取消。
3.進行編譯。
我們在桌面上開始菜單中找到Qt Creator的菜單,然后打開Qt Command Prompt。
然后輸入第一條命令cd %QTDIR%\src\plugins\sqldrivers\mysql 后按回車,運行效果如下。
然后輸入第二條命令:
- qmake “INCLUDEPATH+=C:\MySQL\include” “LIBS+=C:\MySQL\lib\opt\libmysql.lib” mysql.pro
#p#
按回車后運行效果如下:
最后輸入:mingw32-make ,按下回車后經(jīng)過幾秒的編譯,最終效果如下:
整個編譯過程中都沒有出現(xiàn)錯誤提示,可以肯定插件已經(jīng)編譯完成了。
4.我們再次進入Qt Creator安裝目錄下存放數(shù)據(jù)庫驅(qū)動插件的文件夾。
我這里是D:\Qt\2010.02.1\qt\plugins\sqldrivers
其內(nèi)容如下:
可以看到已經(jīng)有了和MySQL相關(guān)的文件了。
最后:我們編寫程序測試插件。
1.我們將上一次的主函數(shù)更改如下。
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- QSqlDatabase db = QSqlDatabase::addDatabase(“QMYSQL”); //添加數(shù)據(jù)庫驅(qū)動
- return a.exec();
- }
運行程序,效果如下。
這里提示:QSqlDatabase: QMYSQL driver not loaded 。
2.這時我們需要將C:\MySQL\bin目錄下的libmySQL.dll文件復制到我們Qt Creator安裝目錄下的qt\bin目錄中。
如下圖:
3.這時再運行程序,就沒有提示了。
4.我們再將主函數(shù)更改一下,測試這時可用的數(shù)據(jù)庫驅(qū)動。
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- qDebug() << “Available drivers:”;
- QStringList drivers = QSqlDatabase::drivers();
- foreach(QString driver, drivers)
- qDebug() << “\t” << driver;
- return a.exec();
- }
運行效果如下:
可以看到,現(xiàn)在已經(jīng)有了MySQL的數(shù)據(jù)庫驅(qū)動了。
【編輯推薦】