QT5.12連接MySQL的實現(xiàn)
為了方便和簡潔,我選擇的是最簡單的方法去完成(雖然因為一堆報錯搞崩了心態(tài))
1.下載并安裝MySQL

選擇Downloads
下拉找到社區(qū)版

因為是在window上運行MySQL,便選擇windows安裝包


這個界面可以選擇版本,默認就行,兩里面挑一個(網(wǎng)絡(luò)穩(wěn)定可以選第一個)
這里選擇第二個下載

只是白嫖并且沒有社區(qū)要求的話,直接選這個就行
下好后會有一個msi文件,雙擊運行,之后會在C:\Program Files (x86)\MySQL下安裝一個
MySQL Installer for Windows
(現(xiàn)在用不到,重裝和安裝別的版本的時候會用到)

選擇需要的版本(第一次運行可能只有一個8.0),點擊右箭頭,選中版本

這里會有自定義安裝路徑和數(shù)據(jù)庫路徑的設(shè)置,這里修改文件夾名字里的空格為-(或者默認)

一路下一步到這里

(因為已經(jīng)裝了8.0,3306口占用了)
這里也是下一步

這里輸入root用戶的密碼,記得住就行
下一步,一直點點到結(jié)束

2.配置環(huán)境變量
復制mysql的安裝路徑,這里是C:\Program Files\MySQL\MySQL-Server-8.0

win+i打開設(shè)置>單擊系統(tǒng)>下拉點擊系統(tǒng)信息>在設(shè)備規(guī)格單擊高級系統(tǒng)設(shè)置


變量名無所謂,夠直觀就行(中文不行)

根據(jù)序號點擊,在第三步,新建的是你自己的變量名,且記住帶百分號 %<變量名>%/bin(不打碼了,懶)
然后win+r,輸入cnm,鍵入MySQL,回車,不出意料,應(yīng)該是這樣的

這時鍵入命令
mysql -uroot -p
輸入安裝時設(shè)置的密碼,

3.QT部分
前提條件
安裝時選擇了source,驗證安沒安裝,只要打開qt的安裝目錄,選擇版本號文件夾,看看有沒有src文件夾

這里或許會有別的什么文件夾,不影響,有src文件夾,就繼續(xù),沒有就下吧(建議直接重裝)
1.復制MySQL安裝目錄
2.打開mysql.pro 路徑一般在
..\Src\qtbase\src\plugins\sqldrivers\mysql
前面的兩個點是你的qt版本號目錄

雙擊.pro文件
修改如下(復制粘貼就行)
TARGET = qsqlmysql HEADERS += $$PWD/qsql_mysql_p.h SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp #QMAKE_USE += mysql OTHER_FILES += mysql.json PLUGIN_CLASS_NAME = QMYSQLDriverPlugin include(../qsqldriverbase.pri) win32:LIBS += "C:\Program Files\MySQL\MySQL-Server-8.0\lib\libmysql.lib" INCLUDEPATH += "C:\Program Files\MySQL\MySQL-Server-8.0\include" DESTDIR = ../mysql/lib/
這里需要根據(jù)具體情況修改的是這里的兩個路徑
你需要把C:\Program Files\MySQL\MySQL-Server-8.0這一坨換成第一步復制的mysql路徑

修改完后選擇qsqldriverbase
修改 qsqldriverbase.pri
QT = core core-private sql-private # For QMAKE_USE in the parent projects. #include($$shadowed($$PWD)/qtsqldrivers-config.pri) include(./configure.pri) PLUGIN_TYPE = sqldrivers load(qt_plugin) DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
這里注釋了第4行,追加了第5行
這里準備就緒后先別急
1.先檢查環(huán)境里是否包含qt安裝目錄下的bin文件夾(運行編譯器必要的)
2.返回上一級目錄,檢查是否有build開頭的文件夾(有就刪了)
到這,單擊小錘子

如果沒有報錯,build的綠條會一路到底

右鍵pro文件,在資源管理器里打開

不出意外,會出現(xiàn)一個lib文件夾

打開它

復制dll文件
打開目錄 D:\Qt\Qt5.12.12\5.12.12\msvc2017_64\plugins\sqldrivers,粘貼文件:

再到MySQL安裝目錄里C:\Program Files\MySQL\MySQL-Server-8.0\lib,復制 libmysql.dll和libmysql.lib 到 D:\Qt\Qt5.12.12\5.12.12\msvc2017_64\bin


到這,差不多了(理論上)
重啟qt
測試
寫一下簡單的鏈接數(shù)據(jù)庫的代碼
#include "widget.h"
#include "ui_widget.h"
#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QSqlDatabase db1 = QSqlDatabase();
db = db1.addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setPassword("root");
db.setUserName("root");
db.setDatabaseName("sys");
if(!db.open()){
qDebug() << db.lastError().text();
}
else{
qDebug() << "OK";
return;
}
}
Widget::~Widget()
{
delete ui;
}
運行測試

補充
如果有看部分qt教學課程,看到代碼是
QSqlDatabase db = QSqlDatabase();
db.addDatabase("QMYSQL");這會報錯,“Driver not loaded Driver not loaded”
這段代碼的問題在于,首先創(chuàng)建了一個 QSqlDatabase 對象的實例,但沒有給它傳遞任何參數(shù)。這意味著沒有指定要使用的數(shù)據(jù)庫驅(qū)動。然后,使用 addDatabase() 方法添加一個數(shù)據(jù)庫驅(qū)動,但這并不會給 db 對象創(chuàng)建一個新的連接。相反,它會返回一個新的 QSqlDatabase 對象,而該對象才是我們真正需要的
還有另一種方法
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
一行解決,簡單明了
到這應(yīng)該就沒問題了
到此這篇關(guān)于QT5.12連接MySQL的實現(xiàn)的文章就介紹到這了,更多相關(guān)QT5.12連接MySQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多
相關(guān)文章
C語言實現(xiàn)直角坐標轉(zhuǎn)換為極坐標的方法
這篇文章主要介紹了C語言實現(xiàn)直角坐標轉(zhuǎn)換為極坐標的方法,涉及C語言進行三角函數(shù)與數(shù)值運算相關(guān)操作技巧,需要的朋友可以參考下2017-09-09

