【全教程】qt連接mysql——從qt編譯mysql驅動到qt連接mysql數據庫(二、編譯連接)

本篇教程分爲三個部分:

  1. 【全教程】qt連接mysql——從qt編譯mysql驅動到qt連接mysql數據庫(一、編譯連接前準備)
  2. 【全教程】qt連接mysql——從qt編譯mysql驅動到qt連接mysql數據庫(二、編譯連接)
  3. 【全教程】qt連接mysql——從qt編譯mysql驅動到qt連接mysql數據庫(三、問題整理)

閱讀本文之前需要先查看我的第一篇文章:

【全教程】qt連接mysql——從qt編譯mysql驅動到qt連接mysql數據庫(一、編譯連接前準備)

 

一、測試結果(測試連接代碼在第一篇文章中)

1.第一種:可用驅動中有QMYSQL這個驅動,但是不能加載(剛嘗試qt連接mysql的沒有複製文件到指定文件夾的不存在這種情況)

 

2.第二種:可用驅動中沒有MYSQL驅動,並且不能加載(第一次嘗試基本都是這種報錯)

 

二、編譯連接過程

從上述結果報錯結果可以知道我們沒有MYSQL驅動,那去哪找到mysql驅動呢?QT5.13.2和QT5.14.1兩個版本都提供了編譯MYSQL驅動的源碼,只需要結合我們自己電腦上安裝的MYSQL的庫文件就可以編譯屬於自己的MYSQL驅動,MYSQL安裝見前一篇文章。

1、找到QT上編譯MYSQL驅動的源碼

源碼的位置在(以qt5.13.2版本爲例):F:\Qt\Qt5.13.2\5.13.2\Src\qtbase\src\plugins\sqldrivers\mysql(小夥伴找到qt目錄,安裝這個文件夾順序找)

可以看到有以下六個文件,mysql文件夾是我自己備份的文件夾,建議大家在操作之前也進行備份。要是沒有這個文件夾可能是安裝時選擇的組件不足,可以重新安裝選擇所有組件。

 

2.用qt打開這個mysql.pro工程文件

打開以後會出現配置項目選擇哪一種編譯器的界面,這裏就需要查看你自己安裝的MYSQL是32位還是64位的,如果是64位的MYSQL,則需要用64位的編譯器,即Desktop Qt 5.13.2 MinGW 64-bit,本文采用的是32位的。

 

 

3.右擊項目選擇重新構建項目如下圖

 

會出現下面報錯:

 

需要我們將 QMAKE_USE += mysql 這句話註釋掉

 

4.註釋掉後,再次進行重新構建項目

會出現以下錯誤:

 

主要是因爲我們沒有mysql.h這個文件,那麼這個文件在哪?在我們自己安裝的mysql裏面,在sql安裝目錄的include下(我的路徑:F:\MySQL\MySQL Server 5.5\include)。

 

所以需要我們在.pro文件添加這些路徑,也即加上下面這兩句話,路徑是我自己的,需要改成你們自己的:

INCLUDEPATH+="F:\MySQL\MySQL Server 5.5\include"
LIBS+="F:\MySQL\MySQL Server 5.5\lib\libmysql.lib"

 

5.加上這兩句話後再次進行重新構建

(1)出現下面的bug表示你用的qt MinGW 位數與MYSQL位數不一致

 

 

(2)若出現下面的bug,若是不出現可能就表示編譯出驅動,直接看第六步。

 

這個bug下面圖片上的這句話有關係,我測試的時候原來的相對路徑不好用,所以我才用的絕對路徑,大家可以自由選擇,改成自己文件的路徑即可。

 

我們按照這個路徑打開這個文件(用記事本即可)可以看到include裏面的qtsqldrivers-config.pri文件並不存在,而存在configgure.pri這個文件,所以我們將include包括的文件改成configgure.pri這個文件,即改爲:include(./configure.pri)

 

 

 

6.再次進行重新構建,構建過程可以查看“4編譯輸出”這一欄的輸出

出現下面的結果就表示我們編譯成功了!

 

7.編譯成功以後就可以直接去找我們編譯成功後的驅動,因爲我們沒有設置輸出目錄所以默認在qt安裝的盤下,比如我的qt在F盤,所以這個輸出也在F盤,路徑:F:\plugins\sqldrivers

 

 

8.將編譯好的驅動(所有文件複製過去就行,省事)放到對應的MinGW編譯器的文件夾中,我用的32位的就放在:F:\Qt\Qt5.13.2\5.13.2\mingw73_32\plugins\sqldrivers中,64位的就在F:\Qt\Qt5.13.2\5.13.2\mingw73_64\plugins\sqldrivers中。

 

9.編譯測試代碼,注意是測試代碼,不是上邊的mysql代碼。測試代碼見第一篇文章。注意編譯也需要用對應的編譯器,生成是32位的就要用32位的編譯器,64位的就是64位的編譯器。

 

結果如下,這表示已經存在驅動,但是還沒有加載,還需要我們從mysql的安裝目錄複製文件到MinGW的文件夾中。

 

10.將F:\MySQL\MySQL Server 5.5\lib中的libmysql.dll與libmysql.lib複製到mingw的bin文件夾中即:F:\Qt\Qt5.13.2\5.13.2\mingw73_32\bin。

 

 

11.再次對測試代碼進行測試發現成功!

 

部分報錯問題請查看第三篇文章:【全教程】qt連接mysql——從qt編譯mysql驅動到qt連接mysql數據庫(三、問題整理)

轉載參考分享此篇文章請註明出處!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章