天天看點

QT5.9連接配接MYSQL5.7

要想将QT與MYSQL相連,簡單的将mysql内的lib檔案複制到QT的bin檔案裡是不行的,需要有一些必要操作才行。下面具體說一下步驟

1.QT編譯位數最好和MYSQL一緻,這樣的話可能會簡單不少,我安裝的位數不一緻,并沒有試過位數一緻的方法,是以這裡說的是位數不一緻時的方法(看了看,位數一緻的話,應該就是不需要第二步,直接從下載下傳的mysql檔案裡找需要的檔案)。

2.需要下載下傳一個工具包編譯生成時候使用(https://downloads.mysql.com/archives/c-c/),下載下傳的位數要和你安裝的QT一緻,下載下傳解壓,解壓路徑不要有空格,我的安裝路徑是:D:\QT

QT5.9連接配接MYSQL5.7
QT5.9連接配接MYSQL5.7

3.找到QT中mysql的源代碼,這裡需要安裝QT的時候安裝相應的元件,沒安裝是找不到的。

D:\QT\QT5.9.9\5.9.9\Src\qtbase\src\plugins\sqldrivers\mysql

用QT打開mysql.pro檔案

QT5.9連接配接MYSQL5.7

打開後先注釋掉QMAKE_USE += mysql ;然後加入下面三行代碼

INCLUDEPATH += "D:/QT/mysql-connector-c-6.1.11-win32/include"

LIBS += "D:/QT/mysql-connector-c-6.1.11-win32/lib/libmysql.lib"

DESTDIR = ../mysql/lib/
           
QT5.9連接配接MYSQL5.7

第一行的路徑就是第二步中下載下傳的檔案的include路徑(不要有空格,有的話用$$quote(路徑))

QT5.9連接配接MYSQL5.7

第二行的路徑是lib檔案夾内的libmysql.lib檔案路徑

第三行,則是你編譯後生成的檔案所在的位置,之前沒搞懂這個,結果生成了不知道在哪,還以為沒成功又搞了好久,具體生成位置看下圖藍色框。

編譯完成後會生成四個檔案,看圖。

QT5.9連接配接MYSQL5.7

4.複制下面兩個dll檔案到D:\QT\QT5.9.9\5.9.9\mingw53_32\plugins\sqldrivers 檔案内

QT5.9連接配接MYSQL5.7

5.複制前面下載下傳安裝的mysql檔案lib内的檔案到QT bin目錄下。

QT5.9連接配接MYSQL5.7
QT5.9連接配接MYSQL5.7

檔案的調整應該就這樣了,下面是用代碼測試連接配接mysql

1.自己建立個過程,在Pro檔案裡加sql

QT       += core gui sql
           

然後加入下面代碼,注釋很詳細了,就不再叙述了

// 列印可用驅動 結果應該是:
    //("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
    qDebug()<<QSqlDatabase::drivers();

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
      //QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
      db.setHostName("127.0.0.1"); //本地位址,應該是一樣的吧
      db.setPort(3306);  //端口号,這個安裝mysql自己設定的
      db.setDatabaseName("scott");  //你想要連接配接的資料庫的名字
      db.setUserName("root");     //使用者名,自己設定的
      db.setPassword("w1250239293");  //密碼,同上
      bool ok = db.open();    //用來檢測是否打開成功

      if (ok){
     QMessageBox::information(this, "infor", "success");
      //查詢資料庫中所有表的名稱
         QStringList tables = db.tables();
         foreach(QString table, tables)
         qDebug()<<table;
    //     qDebug("ok");

          QSqlQuery query;
          //使用查詢指令,我裡面的指令就是典型的scott的庫裡的
          ok = query.exec("SELECT sal FROM emp");
      //    if(ok) qDebug("over");
          //将查詢的值一個個列印出來
          while(query.next()){
              qDebug()<<query.value("sal").toString();
          }
          db.close();
      }
      else {
          QMessageBox::information(this, "infor", "open failed");
      }
           

差不多就是這樣了,我是成功了,但軟體這東西,你照着來都不一定一樣,是以還是得耐着性子慢慢來。

第一次發帖,内容雖然不多,但我覺着挺詳細了,果然還是這種貼圖講話最明了。

2021/6/18

踩坑記錄:依據網上教程,使用官方提供的windeployqt工具進行項目打包,然後說是要把MySQL的libmysql.dll檔案放到.exe的同級目錄下,結果就傻愣愣地照着做,怎麼也連不上MySQL,搜尋半天不知道原因所在,後來回顧流程,突然想起,程式一開始使用的工具包就不是mysql自帶的!然後就去把自己下載下傳的libmysql.dll放進去,果然成功了。

另外,如果要把項目打包放到别的機器上,也是要裝MySQL的,自己電腦怎麼編輯的,那邊也要相同設定。