Qt 5.6+MySQL5.7.18

1、下載
mysql-5.7.18-win32.zip   地址: https://dev.mysql.com/downloads/mysql/
qt-opensource-windows-x86-mingw492-5.6.2.exe   
(可配置於win10 64位)
2、安裝
2.1、安裝mysql

將mysql解壓到C:\MySQL,注意目錄不要有空格,並手動添加my.ini文件(也可手動添加data文件夾),my.ini文件內容如下

[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
[mysqld]
#設置3306端口
port = 3306
# 設置mysql的安裝目錄
basedir=C:\MySQL
# 設置mysql數據庫的數據的存放目錄
datadir=C:\MySQL\data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB

注:basedir和datadir的地址根據自身情況設置。

 接下來,設置環境變量,我的電腦->屬性->高級->環境變量
  選擇系統變量Path,編輯添加C:\MySQL\bin
   或    點擊系統變量下的新建按鈕

       輸入變量名:MYSQL_HOME

       輸入變量值:C:\MySQL

  選擇系統變量中的Path ,點擊編輯按鈕

      在變量值中添加變量值:%MYSQL_HOME%\bin (需要注意的是要在原有變量值後面用 ; 隔開,不能刪除原來的變量值)

以管理員身份運行cmd,
初始化數據庫:                       mysqld --initialize --user=mysql --console

初始化結果中最後一行有分配的密碼(例如會出現root@localhost: VESEA5ZVc2.i),執行完後,上不操作沒有手動添加data文件夾的這一步可自動添加。

安裝:          mysqld --install MySQL
(重新安裝的時候可能會出現提示:Install/Remove of the service denied!(服務安裝被拒絕),輸入sc delete MySQL 命令刪除服務,然後進行啓動mysql)

啓動 :         net start MySQL
   OK,啓動成功

登陸mysql:             mysql -u root -p 
密碼就是上面所說的密碼
修改密碼set password for root@localhost=password('你的密碼 '); 
 
結束!

安裝成功

Qt 5.6+MySQL5.7.18 - qfoxes - qfoxes的博客

2.2 安裝Qt

安裝的時候一定選擇源碼安裝,這樣C:\Qt\5.6下才有src文件夾
Qt 5.6+MySQL5.7.18 - qfoxes - qfoxes的博客
 
生成Makefilel文件
輸入:cd C:\Qt\5.6\Src\qtbase\src\plugins\sqldrivers\mysql
           qmake "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MySQL\lib\libmysql.lib" -o Makefile mysql.pro
這樣會產生三個Makefilel文件,如下圖,
Qt 5.6+MySQL5.7.18 - qfoxes - qfoxes的博客
 
 
用記事本打開mysql.pro,看有沒有多出下面兩行
          INCLUDEPATH+="C:/MySQL/include"
          LIBS+="C:/MySQL/lib/libmysql.lib"
沒有的話手動添加。

Qt 5.6+MySQL5.7.18 - qfoxes - qfoxes的博客
 
接下來就是重點了,網上有教程使用visual studio命令提示符進行編譯,這裏使用mingw編譯器進行編譯,(如果是msvc的編譯器是可以的,但是用mingw編譯器),因爲需要用到reimp命令,所以需要下載 mingw -utils,並把它解壓後的bin目錄裏的內容拷貝到mingw的bin目錄下。

然後
           cd C:\MySQL\lib
          reimp -d libmysql.lib
          dlltool -k -d libmysql.def -l libmysql.a
就會發現在lib文件夾下多出libmysql.a和libmysql.def
Qt 5.6+MySQL5.7.18 - qfoxes - qfoxes的博客
 
然後使用qmake和make命令編譯
cd C:\Qt\5.6\Src\qtbase\src\plugins\sqldrivers\mysql

qmake -o Makefile "INCLUDEPATH+=C:\MySQL\include" "LIBS+=-LC:\MySQL\lib\ -lmysql" mysql.pro


mingw32-make


mingw32-make install

mingw32-make默認似乎是編譯debug項目,編譯產生了debug版的qsqlmysqld4.dll文件。我們還需要release項目編譯產生的qsqlmysql4.dll文件,所以繼續編譯:


mingw32-make -f Makefile.Release


mingw32-make -f Makefile.Release install

最後,把C:\MySQL\lib\libmysql.dll複製到C:\Windws\System32下

OK!!
測試
在工程文件下添加   QT   += sql

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QtSql>
#include<QSqlDatabase>
#include<QDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    qDebug() << "Available drivers:";
                 QStringList drivers = QSqlDatabase::drivers();
                 foreach(QString driver, drivers)
                     qDebug() << "\t "<< driver;
              qDebug() << "End";
              QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
              
}

MainWindow::~MainWindow()
{
    delete ui;
}
結果:
Available drivers:

"QSQLITE"

"QMYSQL"

"QMYSQL3"

"QODBC"

"QODBC3"

"QPSQL"

"QPSQL7"

End



參考:1、http://llydmissile.blog.51cto.com/7784666/1280170

           2、http://blog.csdn.net/pp634077956/article/details/51093554

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