Qt5.15 连接MySQL数据库的实现策略
文章目錄
- Qt5.15 連接MySQL數(shù)據(jù)庫
- 測試環(huán)境:
- 連接
- 測試
- 總結(jié):
Qt5.15 連接MySQL數(shù)據(jù)庫
Qt5.15 的QSqlDatabase 類中并沒有支持MySQL數(shù)據(jù)庫的驅(qū)動(dòng),需要用戶自己添加。
這就需要重新編譯下mysql.pro
測試環(huán)境:
QT版本:QT 5.15.0
MySQL版本:mysql 5.5.55
連接
重新編譯mysql.pro。
1、打開Qt自帶的mysql.pro
文件地址在Qt的安裝目錄下: “C:\Qt\5.15.0\Src\qtbase\src\plugins\sqldrivers\mysql”
2、修改mysql.pro
// 注釋該語句#QMAKE_USE += mysql //添加include(C:\Qt\5.15.0\Src\qtbase\src\plugins\sqldrivers\configure.pri) //繼續(xù)添加LIBS += "D:\Program Files\MySQL\MySQL Server 5.5\lib\ libmysql.lib" INCLUDEPATH +="D:\Program Files\MySQL\MySQL Server 5.5\include" DEPENDPATH += D:\Program Files\MySQL\MySQL Server 5.5\includemysql.pro 修改后如下:
include(C:\Qt\5.15.0\Src\qtbase\src\plugins\sqldrivers\configure.pri) TARGET = qsqlmysqlHEADERS += $$PWD/qsql_mysql_p.h SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp#QMAKE_USE += mysql // 注釋該語句OTHER_FILES += mysql.jsonPLUGIN_CLASS_NAME = QMYSQLDriverPluginLIBS += "D:\Program Files\MySQL\MySQL Server 5.5\lib\ libmysql.lib" INCLUDEPATH +="D:\Program Files\MySQL\MySQL Server 5.5\include" DEPENDPATH += D:\Program Files\MySQL\MySQL Server 5.5\include include(../qsqldriverbase.pri)3、構(gòu)建或者運(yùn)行
這時(shí)會報(bào)錯(cuò),
忽略此問題。
在計(jì)算機(jī)C盤下會產(chǎn)生如下的幾個(gè)文件
然后,將libqsqlmysql.a 、qsqlmysql.dll 復(fù)制到 C:\Qt\5.15.0\mingw81_64\bin 下
測試
編寫測試用例
1、新建widget項(xiàng)目
2、 在.pro 文件中添加
QT += sql
3、 修改main.cpp
#include <QApplication> #include <QMessageBox> #include <QSqlError> #include <QTextCodec> #include <QDebug> #include <QSqlDatabase> #include <QSqlQuery> bool creatConnect();int main(int argc, char *argv[]) {QApplication a(argc, argv);//QTextCodec *codec = QTextCodec::codecForName("UTF-8");//QTextCodec::setCodecForLocale(codec);if(!creatConnect()){// return 1;}qDebug() << "Available drivers:";QStringList drivers = QSqlDatabase::drivers();foreach(QString driver, drivers)qDebug() << "\t "<< driver;qDebug() << "End";QSqlQuery query;QString sql = "select * from test1;";qDebug() << sql;query.exec(sql);while(query.next()){qDebug()<<query.value(0).toString()<<query.value(1).toString();}return a.exec(); }bool creatConnect() {QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("127.0.0.1");db.setPort(3307);db.setDatabaseName("test22");db.setUserName("root");db.setPassword("123456");bool ok = db.open();//建立數(shù)據(jù)庫連接if(!ok){QMessageBox::critical(0,QObject::tr("連接數(shù)據(jù)庫失敗!!!"),db.lastError().text());return false;}else{QMessageBox::information(0,QObject::tr("Tips"),QObject::tr("連接數(shù)據(jù)庫成功!!!"));return true;} }注意:這里的數(shù)據(jù)庫連接的項(xiàng)目中與MySQL安裝過程中的配置要一致,如端口號,數(shù)據(jù)庫名稱、登錄賬號及密碼。
4、運(yùn)行
測試成功,會彈出對話框:
可以看到,MySql的驅(qū)動(dòng)也已經(jīng)添加。
總結(jié):
- 1、本人在調(diào)試過程中曾出現(xiàn),MySQL驅(qū)動(dòng)以添加,但是數(shù)據(jù)庫還是連不上的情況,最后還是重新卸載MySQL,然后重裝MySQL后
才連接成功。 - 2、網(wǎng)上也有介紹將MySQL安裝目錄lib 文件夾下的文件 libmysql.dll 復(fù)制到 Qt的bin
目錄下,本人親測未能有效。我也對照過MySQL5.5.55 的版本,是64位的。Qt 的編譯是MInGW_64,可以確定不是版本問題 - 3、本人也曾從MySQL官網(wǎng)上下載https://dev.mysql.com/downloads/connector/c/
下載mysql-connector-c,但是在其lib目錄中并沒有找到文件“l(fā)ibmysql.dll”。
總結(jié)
以上是生活随笔為你收集整理的Qt5.15 连接MySQL数据库的实现策略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt数据库操作(三) -- 使用SQL模
- 下一篇: Qt 解决MySQL 中文乱码问题