QT使用MySql的配置(使用addLibraryPath載入插件),編譯QT的MySql驅動問題及解決方案(本身使用libmysql.lib進行編譯mysql.pro,萬不得已能夠查看Makefil

2010/04/23:Fixes : 更新批處理,以兼容WIN7。html

第一次系統地玩QT,因而誕生了此預備式:mysql

【QT版本4.6.0(VS2008編譯版),開發平臺推薦使用Qt Creator(最新1.3版),系統這裏使用Windows Xp】sql

QT & Qt Creator & MySql安裝: 
QT:不知道QT開發人員怎麼想的,老是跟空格過不去,安裝QT時儘可能將其裝在根目錄下,路徑中儘可能不要有中文,不然因爲這問題出現詭異狀況,GOOGLE都不必定好使~ 
Qt Creator:個人Qt Creator是在VS2008安裝完成以後裝的。裝完Creator,它就默認使用VS編譯器了(若是有問題,從VS環境變量、QT環境變量入手!)。但這也帶來一個問題,就是調試器不能用GDB,要用微軟的CDB(下載地址),在上面挑個最新版的下載安裝。我這裏Creator用的是1.3版的,對於CDB兼容性仍是有問題的,會提示找不到"dbgeng.dll"。這時須要把CDB安裝文件夾中的"dbghelp.dll"拷貝到Creator的Bin目錄下,完成後就能夠正常使用CDB調試了。 
MySql:MySql裝上去一般會出現萬惡的1067錯誤,針對該錯誤的解決方法可謂五花八門。這裏MySql建議安裝徹底版的(除非很瞭解MySql,否則就不要安裝Essential版),裝的時候也是儘可能挑英文無空格路徑裝,省得萬一因路徑出問題折騰。MySql的配置方法數據庫

  • 把my-small.ini拷貝成my.ini
  • 在其中的[client]下加上default-character-set=GBK;在[mysqld]下加上default-character-set=GBKbasedir = "D:\MySql"(MySql路徑)、datadir = "D:\MySql\data"(數據庫路徑)、tmpdir = "D:\MySql\\temp"(臨時文件夾,注意雙"\"轉義"\t")。其中各路徑根據MySql安裝狀況本身修改。
  • 在my.ini旁邊建立一個文本文件,文件名改成Create.bat。用記事本打開,粘進以下代碼:
@echo off
cd/d %~dp0
@echo Build DataBase ...
mkdir data
mkdir temp
copy /V /Y ".\my.ini" "%windir%\my.ini"
.\bin\mysqld.exe --defaults-file=".\my.ini" --console
@echo Failure.
pause

並運行該批處理。若是最後未出現Failure輸出,則建立數據庫成功!建立成功後,關閉Create.bat批處理運行窗口。app

  • 在my.ini旁邊再建立一個文本文件,文件名改成Rebuild_And_Start_Service.bat。用記事本打開,粘進以下代碼:
@echo off
cd/d %~dp0
@echo Now Reinstall MySql Service ...
.\bin\mysqld.exe --remove
.\bin\mysqld.exe --install MySql
@echo Start Service ...
net start MySql
@echo done.
pause

並運行該批處理。人品不錯的話,應該是順利啓動服務了,碰1067的話GOOGLE去吧~函數

  • 爲了往後管理方便,須要再建立個批處理來中止MySql服務。 在my.ini旁邊再建立一個文本文件,文件名改成Stop_Service.bat。用記事本打開,粘進以下代碼:
@echo off
net stop MySql
echo done.
pause

並運行該批處理。關閉服務的批處理一般都是最好使的,雙擊即關閉。post

  • 再補充一個啓動MySql服務的批處理Start_Service.bat,便於在Stop_Service.bat運行後再次啓動服務:
@echo off
net start MySql
echo done.
pause
  • 上面一切都搞定,MySql服務運行後,就能夠運行MySql安裝文件夾下Bin目錄中的mysql.exe,試試MySql功能正常不。
  • MySql能夠啓動並正常使用後,將MySql數據庫驅動(點擊看編譯方法)拷貝到「%QTDIR%\plugins\sqldrivers」中。在MySql安裝目錄中找到「libmysql.dll」,並將其拷貝到「%QTDIR%\bin」下。 

關於帶數據庫驅動的QT程序的部署:在QT程序的main函數中,使用QCoreApplication::addLibraryPath()添加庫文件加載路徑。學習

QT的中文化 
      上面的已經準備完成了,能夠開始編寫QT程序了。用Designer拖個框啥的,上面的文字標籤能夠直接打中文(也可以正常顯示),如今的Designer國際化方面作得已經很好了,默認就把全部界面標籤文字轉爲可翻譯的,這樣方便將來對軟件國際化。但若是使用如QMessageBox來彈個對話框,代碼裏打入中文會致使對話框最終顯示出來爲亂碼。解決方案是:QT程序中全部用到字符串的地方,最好使用tr來把字符串括起來。一是方便對其國際化;二是能夠在main函數中加入tr區域選擇代碼來消除亂碼。修改後的main函數以下:ui

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //設置tr以及地域。
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
    //添加庫加載路徑。
    QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath() + '/' + PLUGINS_NAME);
    Widget w;
    w.show();
    return a.exec();
}

注意:tr只有在類中已經繼承了QObject時才能夠直接使用,不然可使用QObject::tr()。spa

 
http://www.cnblogs.com/codingmylife/archive/2010/01/22/1678529.html
 

      作畢業設計要用到MySql,界面方面想用下QT,順便學習一下QT的使用。上去就碰到問題,沒有MySql的驅動(其實在.\Qt\4.6.0\plugins\sqldrivers目錄下有,後來編譯完了才發現,這裏要崩潰一下~)。GOOGLE了一下,翻了翻網頁,就開始編譯驅動了。

      這裏使用QT4.6.0版本和VS2008自帶的編譯器

      使用的命令行參數是:

qmake –o Makefile INCLUDEPATH+="D:\Program Files\MySQL\MySQL Server 5.1\include" LIBS+="D:\Program Files\MySQL\MySQL Server 5.1\lib\opt\libmysql.lib" mysql.pro
nmake

      跟預料中的同樣,編譯出錯,錯誤是"cannot find file: mysql.pro",費了半天勁終於發現我進入的目錄是".\Qt\4.6.0\src\sql\drivers\mysql"而不是傳說中的".\Qt\4.6.0\src\plugins\sqldrivers\mysql"(本目錄纔是正確路徑!)。發生本錯誤的同志們必定要檢查一下命令行的路徑進的是否正確!

      一個問題解決了,qmake成功完成,開始nmake。這裏先是碰到了qsqlmysqld_resource.rc中找不到"WinVer.h"的錯誤。找了找,發現WinVer.h頭文件竟然在Windows SDK的文件夾下,因而在".\Microsoft Visual Studio 9.0\Common7\Tools"中找到了vsvars32.bat設置環境變量的批處理,把該批處理拖入命令行窗口運行一遍(注意該批處理僅設置本次命令行窗口中的環境變量,並未修改註冊表,因此每次打開個新命令行窗口都要運行一次批處理纔可得到其中包含的環境變量設置!),再nmake,找不到WinVer.h的問題解決了。

      再次nmake,此次問題就詭異了,竟然找不到"mysql.h"!但mysql.h已經在qmake的INCLUDEPATH參數中包含進去了,怎麼可能找不到?鬱悶,打開Makefile.Debug看看,發現裏面INCLUDE進去的"D:\Program Files\MySQL\MySQL Server 5.1\include"每一個空格處都被認爲是一個路徑,好好的路徑給分的希碎,qmake的智商過低了!無法,把MySQL Server 5.1文件夾下的include和lib文件夾直接拷貝到根目錄下,這樣INCLUDEPATH和LIBS路徑均無空格,再次qmake、nmake,OK了!

      總結:QT編譯MySql驅動注意要點:

  1. 先檢查".\Qt\4.6.0\plugins\sqldrivers"中有無sql驅動,有的話就別費這勁編譯了!
  2. 安裝MySql時要勾住「C Include Files 和 Lib Files」選項,這樣才能裝上MySql的頭文件和連接庫。
  3. 安裝MySql時路徑中不要有空格,否則編譯驅動太費勁(上面的找不到"mysql.h"錯誤)。
  4. 命令行進行qmake和nmake前,必定要先轉入正確目錄(上面的"cannot find file: mysql.pro"錯誤)!
  5. 在nmake前最好運行一遍vsvars32.bat批處理(上面的找不到"WinVer.h"錯誤)。
 
http://www.cnblogs.com/codingmylife/archive/2010/01/19/1678530.html
相關文章
相關標籤/搜索