1. 程式人生 > >QT----DAtABASE QMYSL驅動 QSqlDatabase: QMYSQL driver not loaded

QT----DAtABASE QMYSL驅動 QSqlDatabase: QMYSQL driver not loaded

HEADERS+=\
Widget01.h\
Widget02.h\
Widget03.h\
Widget04.h\
Contact.h\
Widget05.h
SOURCES+=\
Widget01.cpp\
main.cpp\
Widget02.cpp\
Widget03.cpp\
Widget04.cpp\
Contact.cpp\
Widget05.cpp
QT+=guiwidgetssql
CONFIG+=C++11
#ifndefCONTACT_H
#defineCONTACT_H
#include<QWidget>
#include<QSqlTableModel>
#include<QTableView>
#include<QLineEdit>
#include<QPushButton>
classContact:publicQWidget
{
Q_OBJECT
public:
explicitContact(QWidget*parent=0);
QSqlTableModel*_model;
QTableView*_view;
QLineEdit*_filter;
QPushButton*_add;
QPushButton*_del;
QPushButton*_reset;
QPushButton*_submit;
signals:
publicslots:
voidslotModelDataChanged(QModelIndex
,QModelIndex);
voidslotFilterChanged(QStringfilter);
};
#endif//CONTACT_H
CONTACT.cpp

#include"Contact.h"
#include<QVBoxLayout>
#include<QHBoxLayout>
#include<QSqlRecord>
#include<QCompleter>
#include<QDebug>
Contact::Contact(QWidget*parent):
QWidget(parent)
{
_model=newQSqlTableModel;
_view=newQTableView;
_view->setModel(_model);
_model->setTable("tcontact");
_model->setEditStrategy(QSqlTableModel::OnManualSubmit);
connect(_model,SIGNAL(dataChanged(QModelIndex,QModelIndex)),
this,SLOT(slotModelDataChanged(QModelIndex,QModelIndex)));
_model->select();
//setLayout
QVBoxLayout*vBox=newQVBoxLayout(this);
vBox->addWidget(_view);
QHBoxLayout*hBox=newQHBoxLayout;
vBox->addLayout(hBox);
hBox->addWidget(_filter=newQLineEdit,1);
hBox->addWidget(_add=newQPushButton("Add"));
hBox->addWidget(_del=newQPushButton("Del"));
hBox->addWidget(_reset=newQPushButton("Reset"));
hBox->addWidget(_submit=newQPushButton("Submit"));
connect(_add,&QPushButton::clicked,[&](){
QSqlRecordrecord=_model->record();
_model->insertRecord(-1,record);
});
connect(_del,&QPushButton::clicked,[&](){});
connect(_reset,&QPushButton::clicked,[&](){});
connect(_submit,&QPushButton::clicked,[&](){
_model->submitAll();
});
connect(_filter,SIGNAL(textChanged(QString)),
this,SLOT(slotFilterChanged(QString)));
slotModelDataChanged(QModelIndex(),QModelIndex());
}
voidContact::slotFilterChanged(QStringfilter)
{
if(filter.isEmpty())
{
_model->setFilter("");
_model->select();
return;
}
//usernamelikefilterorpasswordlikefilter.......
QSqlRecordrecord=_model->record();
QStringmodelFilter;
for(inti=0;i<record.count();++i)
{
if(i!=0)
{
modelFilter+="or";
}
QStringfield=record.fieldName(i);
QStringsubFilter=QString().sprintf("%slike'%%%s%%'",field.toUtf8().data(),filter.toUtf8().data());
//qDebug()<<subFilter;
modelFilter+=subFilter;
}
qDebug()<<modelFilter;
_model->setFilter(modelFilter);
_model->select();
}
voidContact::slotModelDataChanged(QModelIndex,QModelIndex)
{
QStringListstrList;
for(inti=0;i<_model->rowCount();++i)
{
QSqlRecordrecord=_model->record(i);
for(intj=0;j<record.count();++j)
{
QVariantvar=record.value(j);
if(var.isNull())continue;
strList<<var.toString();
}
}
qDebug()<<strList;
QCompleter*completer=newQCompleter(strList);
_filter->setCompleter(completer);
}
#ifndefWIDGET01_H
#defineWIDGET01_H
#include<QWidget>
classWidget01:publicQWidget
{
Q_OBJECT
public:
explicitWidget01(QWidget*parent=0);
signals:
publicslots:
};
#endif//WIDGET01_H
Widget01.cpp
#include"Widget01.h"
#include<QSqlDatabase>
#include<QSqlError>
#include<QSqlQuery>
#include<QSqlResult>
#include<QDebug>
Widget01::Widget01(QWidget*parent):
QWidget(parent)
{
/*QSQLITEQODBCQPLSQL*/
QSqlDatabasedb=QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setUserName("root");
db.setPassword("iamxgl");
db.setDatabaseName("d0718");
boolbRet=db.open();
if(bRet==false)
{
qDebug()<<"erroropendatabase"<<db.lastError().text();
exit(0);
}
qDebug()<<"opendatabasesuccess";
//db.exec("insertintotuser(username,password,gender)values('xueguoliang','xxdfsdf',1)");
QSqlQueryquery=db.exec("select*fromd0718");
//intsize=query.size();
boolb=query.first();
while(b)
{
//QSqlResult*result=query.result();
//QVector<QVariant>values=result->boundValues();
//qDebug()<<values;
b=query.next();
}
}
#ifndefWIDGET02_H
#defineWIDGET02_H
#include<QWidget>
classWidget02:publicQWidget
{
Q_OBJECT
public:
explicitWidget02(QWidget*parent=0);
signals:
publicslots:
};
#endif//WIDGET02_H
Widget02.cpp
#include"Widget02.h"
#include<QSqlDatabase>
#include<QSqlTableModel>
#include<QSqlRecord>
#include<QDebug>
#include<QSqlError>
Widget02::Widget02(QWidget*parent):
QWidget(parent)
{
//QSqlTableModel:資料表對應的資料結構
QSqlTableModelmodel;
model.setTable("tuser");
//model.setFilter("username<>'newuser'");
model.select();//execquery
intret=model.rowCount();
//readdatafromdatabase
for(inti=0;i<ret;++i)
{
QSqlRecordrecord=model.record(i);
for(intj=0;j<record.count();j++)
{
qDebug()<<record.value(j);
}
}
//updatedatatodatabase
//model.setData(model.index(0,1),"xxxxxx");
//model.submitAll();
//insertdatatodatabase
QSqlRecordrecord=model.record();
//record.setValue("id",);
record.setValue("username","newuser1");
record.setValue("password","newpassword");
record.setValue("gender",1);
model.insertRecord(-1,record);
model.submitAll();
}
#ifndefWIDGET03_H
#defineWIDGET03_H
#include<QObject>
#include<QSqlTableModel>
#include<QTableView>//showtable
classWidget03:publicQWidget
{
Q_OBJECT
public:
explicitWidget03(QWidget*parent=0);
QSqlTableModel*_model;
QTableView*_view;
signals:
publicslots:
voidslotSubmitClicked();
voidslotDelClicked();
voidslotAddClicked();
};
#endif//WIDGET03_H
Widget03.cpp

#include"Widget03.h"
#include<QVBoxLayout>
#include<QHBoxLayout>
#include<QPushButton>
#include<QMessageBox>
#include<QSqlError>
#include<QSqlDatabase>
#include<QSqlRecord>
Widget03::Widget03(QWidget*parent):
QWidget(parent)
{
_model=newQSqlTableModel;
_model->setTable("tuser");
_model->select();
_model->setEditStrategy(QSqlTableModel::OnManualSubmit);
_model->setHeaderData(0,Qt::Horizontal,"編號");
_model->setHeaderData(1,Qt::Horizontal,"使用者名稱");
_model->setHeaderData(2,Qt::Horizontal,"密碼");
_model->setHeaderData(3,Qt::Horizontal,"性別");
_view=newQTableView;
_view->setModel(_model);
//_view->hideColumn(2);
QVBoxLayout*lay=newQVBoxLayout(this);
lay->addWidget(_view);
QHBoxLayout*hBox=newQHBoxLayout;
lay->addLayout(hBox);
hBox->addStretch();
QPushButton*del=newQPushButton("del");
connect(del,SIGNAL(clicked()),this,SLOT(slotDelClicked()));
hBox->addWidget(del);
QPushButton*submit=newQPushButton("submit");
connect(submit,SIGNAL(clicked()),this,SLOT(slotSubmitClicked()));
hBox->addWidget(submit);
QPushButton*add=newQPushButton("add");
connect(add,SIGNAL(clicked()),this,SLOT(slotAddClicked()));
hBox->addWidget(add);
}
voidWidget03::slotAddClicked()
{
//starttransaction
_model->database().transaction();
QSqlRecordrecord=_model->record();
_model->insertRecord(-1,record);
}
voidWidget03::slotDelClicked()
{
//通過_view去獲取被選中的部分的資料model
QItemSelectionModel*selectModel=_view->selectionModel();
//通過選中的資料結構,獲取這些格子的ModelIndex
QModelIndexListselectList=selectModel->selectedIndexes();
QList<int>delRow;
//遍歷這些格子,獲取格子所在行,因為可能存在相同的行,所以要去重
for(inti=0;i<selectList.size();++i)
{
QModelIndexindex=selectList.at(i);
//_model->removeRow(index.row());
delRow<<index.row();
}
while(delRow.size()>0)
{
introw=delRow.at(0);
delRow.removeAll(row);
_model->removeRow(row);
}
_model->submitAll();
}
voidWidget03::slotSubmitClicked()
{
if(!_model->submitAll())
{
QMessageBox::critical(this,"Error",QSqlDatabase().lastError().text());
_model->database().rollback();
}
else
{
_model->database().commit();
}
}
#ifndefWIDGET04_H
#defineWIDGET04_H
#include<QObject>
#include<QSqlTableModel>
#include<QTableView>//showtable
#include<QItemDelegate>
#include<QComboBox>
classTUserDelegate:publicQItemDelegate
{
QWidget*createEditor(QWidget*parent,
constQStyleOptionViewItem&option,
constQModelIndex&index)const
{
if(index.column()==0)
returnNULL;
if(index.column()==3)
{
QComboBox*combo=newQComboBox(parent);
combo->addItem("男");
combo->addItem("女");
returncombo;
}
returnQItemDelegate::createEditor(parent,option,index);
}
};
#if0
classReadOnlyDelegate:publicQItemDelegate
{
QWidget*createEditor(QWidget*,
constQStyleOptionViewItem&,
constQModelIndex&)const
{
returnNULL;
}
};
classGenderDelegate:publicQItemDelegate
{
public:
QWidget*createEditor(QWidget*parent,
constQStyleOptionViewItem&,
constQModelIndex&)const
{
QComboBox*combo=newQComboBox(parent);
combo->addItem("男");
combo->addItem("女");
returncombo;
}
};
#endif
classMyTableModel:publicQSqlTableModel
{
public:
QVariantdata(constQModelIndex&idx,introle=Qt::DisplayRole)const
{
//if(role==Qt::DisplayRole)
//returnQSqlTableModel::data(idx,role);
if(idx.column()!=3)
returnQSqlTableModel::data(idx,role);
QVariantvar=QSqlTableModel::data(idx,role);
if(var==0)
{
return"女";
}
return"男";
}
boolsetData(constQModelIndex&index,constQVariant&value,introle=Qt::EditRole)
{
if(index.column()!=3)
returnQSqlTableModel::setData(index,value,role);
if(value=="男")
returnQSqlTableModel::setData(index,1,role);
returnQSqlTableModel::setData(index,0,role);
}
};
classWidget04:publicQWidget
{
Q_OBJECT
public:
explicitWidget04(QWidget*parent=0);
MyTableModel*_model;
QTableView*_view;
signals:
publicslots:
voidslotSubmitClicked();
voidslotDelClicked();
voidslotAddClicked();
};
#endif//WIDGET04_H
Widget04.cpp

#include"Widget04.h"
#include<QVBoxLayout>
#include<QHBoxLayout>
#include<QPushButton>
#include<QMessageBox>
#include<QSqlError>
#include<QSqlDatabase>
#include<QSqlRecord>
Widget04::Widget04(QWidget*parent):
QWidget(parent)
{
_model=newMyTableModel;
_model->setTable("tuser");
_model->select();
_model->setEditStrategy(QSqlTableModel::OnManualSubmit);
_model->setHeaderData(0,Qt::Horizontal,"編號");
_model->setHeaderData(1,Qt::Horizontal,"使用者名稱");
_model->setHeaderData(2,Qt::Horizontal,"密碼");
_model->setHeaderData(3,Qt::Horizontal,"性別");
_view=newQTableView;
_view->setModel(_model);
//_view->hideColumn(2);
//_view->setItemDelegateForColumn(3,newGenderDelegate);
//_view->setItemDelegateForColumn(0,newReadOnlyDelegate);
_view->setItemDelegate(newTUserDelegate);
QVBoxLayout*lay=newQVBoxLayout(this);
lay->addWidget(_view);
QHBoxLayout*hBox=newQHBoxLayout;
lay->addLayout(hBox);
hBox->addStretch();
QPushButton*del=newQPushButton("del");
connect(del,SIGNAL(clicked()),this,SLOT(slotDelClicked()));
hBox->addWidget(del);
QPushButton*submit=newQPushButton("submit");
connect(submit,SIGNAL(clicked()),this,SLOT(slotSubmitClicked()));
hBox->addWidget(submit);
QPushButton*add=newQPushButton("add");
connect(add,SIGNAL(clicked()),this,SLOT(slotAddClicked()));
hBox->addWidget(add);
}
voidWidget04::slotAddClicked()
{
QSqlRecordrecord=_model->record();
_model->insertRecord(-1,record);
}
voidWidget04::slotDelClicked()
{
//通過_view去獲取被選中的部分的資料model
QItemSelectionModel*selectModel=_view->selectionModel();
//通過選中的資料結構,獲取這些格子的ModelIndex
QModelIndexListselectList=selectModel->selectedIndexes();
QList<int>delRow;
//遍歷這些格子,獲取格子所在行,因為可能存在相同的行,所以要去重
for(inti=0;i<selectList.size();++i)
{
QModelIndexindex=selectList.at(i);
//_model->removeRow(index.row());
delRow<<index.row();
}
while(delRow.size()>0)
{
introw=delRow.at(0);
delRow.removeAll(row);
_model->removeRow(row);
}
_model->submitAll();
}
voidWidget04::slotSubmitClicked()
{
if(!_model->submitAll())
{
QMessageBox::critical(this,"Error",QSqlDatabase().lastError().text());
}
}
#ifndefWIDGET05_H
#defineWIDGET05_H
#include<QWidget>
#include<QSqlQueryModel>
#include<QTableView>
classWidget05:publicQWidget
{
Q_OBJECT
public:
explicitWidget05(QWidget*parent=0);
QSqlQueryModel*_model;
QTableView*_view;
signals:
publicslots:
};
#endif//WIDGET05_H
Widget05.cpp

#include"Widget05.h"
#include<QSqlQuery>
#include<QVBoxLayout>
Widget05::Widget05(QWidget*parent):
QWidget(parent)
{
_model=newQSqlQueryModel;
_view=newQTableView(this);
_view->setModel(_model);
_model->setQuery("select*fromtuser");
_model->query();
QVBoxLayout*lay=newQVBoxLayout(this);
lay->addWidget(_view);
}
main.cpp
#include<QApplication>
#include"Widget05.h"
#include<QSqlDatabase>
#include<QSqlError>
#include<QDebug>
#include"Contact.h"
intmain(intargc,char*argv[])
{
QApplicationapp(argc,argv);
/*QSQLITEQODBCQPLSQL*/
QSqlDatabasedb=QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setUserName("root");
db.setPassword("iamxgl");
db.setDatabaseName("d0718");
boolbRet=db.open();
if(bRet==false)
{
qDebug()<<"erroropendatabase"<<db.lastError().text();
exit(0);
}
qDebug()<<"opendatabasesuccess";
Widget05w;
w.show();
returnapp.exec();
}
使用如下方法進行解決:L::

QSqlDatabase: QMYSQL driver not loaded

QSqlDatabase: available drivers: QSQLITE QODBC QODBC3

Qt5.0開源版本預設是不提供QMySQL驅動的,這篇文件主要講述Windows環境下如何使用MinGW為Qt5.0安裝QMySQL驅動。

(1) 安裝Qt5.0開源版本的library和source code:

(2) 安裝MySQL Installer 5.6.11:

將MySQL安裝在C盤自建目錄MySQL中,儘量不使用Program files目錄(空格)可能引起莫名的路徑問題。

(3) 開啟Qt5.0命令列介面:

啟動方式:開始選單=>>所有程式==>>Qt5.0.2==>>Qt5.0.2==>>MinGW 4.7==>>Qt 5.0.2 for Desktop (MinGW 4.7)

(4) 執行以下命令:

這是最重要的一步,確保Source Code和MySQL安裝在同一個碟符。

cd C:\Qt\Qt5.0.1\Sources\qtbase\src\plugins\sqldrivers\mysql\

該目錄下存在幾個檔案,其中包括mysql.pro,我們所有的編譯工作也正是從此檔案開始。

qmake "INCLUDEPATH+=c:\\MySQL\\include" "LIBS+=c:\\MySQL\\lib\\libmysql.lib" -o Makefile mysql.pro

此時,會在當前目錄下生成幾個Makefile檔案和兩個資料夾類。

此處我們也可將mysql的兩路徑:

INCLUDEPATH += "C:/MySQL/include"

LIBS += "C:/MySQL/lib/libmysql.lib"

直接加入mysql.pro中,然後執行qmake命令如下:

qmake -o Makefile mysql.pro

最後執行:

mingw32-make

如果一切順利,此時在C:\Qt\Qt5.0.1\Sources\qtbase\plugins\sqldrivers會生成qsqlmysql.dll和qsqlmysqld.dll檔案。

(5) 配置QMySQL驅動:

拷貝qsqlmysql.dll和qsqlmysqld.dll到C:\Qt\Qt5.0.1\5.0.1\mingw47_32\plugins\sqldrivers目錄中

從c:\MySQL\lib拷貝libmysql.dll到C:\Qt\Qt5.0.2\5.0.2\mingw47_32\bin,此時大功告成。

(6) 測試QMYSQL驅動:

#include <QApplication>

#include <QtSql>

#include <QtWidgets>

#include <iostream>

bool createConnection()

{

    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");

    db.setHostName("localhost");

    db.setDatabaseName("test");

    db.setUserName("root");

    db.setPassword("123456");

    if(!db.open()) {

        QMessageBox::critical(0, QObject::tr("Database Error"), \

            db.lastError().text());

        return false;

    }

相關推薦

QT----DAtABASE QMYSL驅動 QSqlDatabase: QMYSQL driver not loaded

HEADERS+=\Widget01.h\Widget02.h\Widget03.h\Widget04.h\Contact.h\Widget05.hSOURCES+=\Widget01.cpp\main.cpp\Widget02.cpp\Widget03.cpp\Widget04.cpp\Contact.cp

Qt連線MySQL提示“QSqlDatabase: QMYSQL driver not loaded”的解決辦法

QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 首先在MySQL官網h

Qt連線mysql時出現 QSqlDatabase: QMYSQL driver not loaded的解決方法

用Qt5.41連線mysql時出現  QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7解決方法:

QT5 解決QSqlDatabase: QMYSQL driver not loaded 問題

QT5 解決QSqlDatabase: QMYSQL driver not loaded 問題 在windows下開發QT連線資料庫時遇到這個問題,之前解決過一次但是換了臺機子又忘記了,這次碼下來。 下載mysql的支援包 地址:https://dev.mysql.com/dow

QSqlDatabase: QMYSQL driver not loaded的解決方法

1、環境 系統:win x64 QT版本:5.7.0 mysql版本:5.7.22解壓縮版 2、現象 QT執行訪問mysql資料庫,出現QSqlDatabase: QMYSQL drive

Qt5.4下連線Mysql,QSqlDatabase: QMYSQL driver not loaded but available

首先來自這位國外大神的幫助  http://seppemagiels.com/blog/create-mysql-driver-qt5-windows,  同時我最希望我的這篇部落格能夠幫助一些朋友解決這個問題,我也是糾結了好久,搞得好煩,非常能理解那種心情。。。。網上的

Qt5.3.1 ubuntu14.0464bit QSqlDatabase: QMYSQL driver not loaded的解決方案 real solution

1.現象 在連線資料庫的時候出現 ./hello-pc QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPS

Qt連結資料庫出現“QMYSQL driver not loaded”的解決辦法

VS2012+QT5.2.1+MySQL 5.1.51 Win32資料庫編寫程式執行: void QtUser::getData(void){ QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");    db.setH

Qt QMYSQL driver not loaded 解決辦法

在做開發的時候用到了mysql, 用以下程式碼測試是否可以用 mysql      qDebug()<< QSqlDatabase::drivers();     qDebug()<< QCoreApplication::libraryPaths

fedora 18~20 中Qt 5.2.1 解決連線mysql資料庫出現QMYSQL driver not loaded的問題

QT += sql //在.pro檔案里加入這一句 //包含標頭檔案 #include <QDebug> #include <QSqlQuery> #include <QSqlDatabase> //連線資料庫 Q

qt連線mysql提示QMYSQL driver not loaded

1、下載 mysql-5.6.24-win32 2、在qt原始碼路徑Src\qtbase\src\plugins\sqldrivers\mysql中找到MySQL.pro工程檔案,新增外部庫,即第一步中libmysql.lib的目錄,編譯生成的檔案在src/qtbase/p

Ubuntu16.04 QT "QMYSQL driver not loaded on Ubuntu"問題

原文: Assuming that for getting this error you installed Qt from the binary packages downloaded from qt.io: Install the MySQL client dev

QMYSQL driver not loaded 的原理和解決辦法

最近使用Qt連線Mysql遇到了"QMYSQL driver not loaded"的問題.遇到這個問題的人很多,網上找到的資料也是眾說紛紜.但大部分都沒法根本解決問題.希望看到我這片文章的人不要在花兩週時間折騰各個版本的mysql,各個版本的Qt了.沒時間的直接看最後總結.

Qt5.9連線MySql5.7.17錯誤解決辦法(錯誤提示:QMYSQL driver not loaded)

我用Qt5.9新建一個Console控制檯程式,用Qt5.9Console控制檯測試連線MySql5.7.17資料庫時,出現MySql資料庫驅動不可用,具體的程式碼和錯誤如下所示:1.1程式碼如下:(記得在.pro問價裡面新增QT+=sql)#include<QCore

windows下QMYSQL driver not loaded的解決方案

環境:win7 64 位系統,qt5.4 32位 因為qt5.4已經編譯好QMysql驅動了,具體可以檢視D:\Qt\Qt5.4.1\5.4\mingw491_32\plugins\sqldrivers資料夾下有沒有 qsqlmysql.dll和qsqlmysqld.dll

QT 關於Driver not loaded 與 結構體的建構函式

QT 關於Driver not loaded 在程式中使用SQLite資料庫,如下的程式碼: QSqlDatabase db; QSqlQuery query; db = QSqlDatabase::addDatabase("QSQLITE");

QT QODBC driver not loaded

本人親自測試,在Qt4下同樣可行: 編譯C:\Qt\Qt5.0.1\5.0.1\Src\qtbase\src\plugins\sqldrivers\sqldrivers.pro 然後在C:\plugins\sqldrivers\下面的檔案複製到C:\Qt\Qt5.0.1\5.0.1\ming

Qt 5.1.0 on Ubuntu Linux, MySQL資料庫報錯 (driver not loaded)

問題描述: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7 false 引起報錯的示例程式碼如下:

qtdriver not loaded

我真的想吐槽一番,這個問題真尼瑪蛋疼,困擾了我很久,今天做一個總結吧。網上說的什麼qmake方法,感覺挺蛋疼,反正還是用自己總結的方法吧。 1、到qt的src檔案下重新編譯mysql,好像是因為版權問題,qt不直接提供mysql的dll 我的路徑: D:\Qt\4.8.4\

QT+MySQL程式打包釋出後提示driver not loaded driver not loaded的問題

之前寫了一個程式,用到了QT和MySQL,使用QT自帶的打包工具打包釋出之後,提示問題, 網上搜了很多,都說是缺少資料庫外掛,但是說法略有不同,有的說缺少libmysql.dll,有的說缺少qsqlmysql4.dll…… 沒辦法,只好一個個方法嘗試,過