最近装了一个WAMP服务器,要用QT访问MySql数据库,代码如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qsqldatabase.h"
#include "qdebug.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setDatabaseName("test");
db.setUserName("root");
db.setPassword("123456");
bool ok = db.open();
if (ok)
{
qDebug() << "连接数据库ok";
}
else
{
qDebug() << "连接数据库失败";
}
}
出现错误:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7
连接数据库失败
要解决这个问题,首先看在装QT时有没有装源文件,如果装了,在源文件目录下会有MySQL目录,我的是C:\Qt\Qt5.12.5\5.12.5\Src\qtbase\src\plugins\sqldrivers\mysql\,如果没装,请重新安装。
用Qt Creator打开 mysql.pro, 等待编译...
第二步:下载SQL编译库,
下载之前先确认自己安装的MySql版本是多少,并且要确定是32位的还是64位的,然后到https://downloads.mysql.com/archives/community/下载对应的版本,我的WAMP是64位的,版本是 5.6.17。
下载后解压:
我们要用到里面的include目录和Lib里面的库,接下来就是编译QT所需要的库:qsqlmysql.dll qsqlmysql.lib qsqlmysql.a这三个文件。
在mysql.pro里加三句代码:
INCLUDEPATH+=C:/Users/Administrator/Pictures/mysql-5.6.17-winx64/mysql-5.6.17-winx64/include/
LIBS+=C:/Users/Administrator/Pictures/mysql-5.6.17-winx64/mysql-5.6.17-winx64/lib/*.lib
DESTDIR = ../mysql/mysqlDll 这是编译目录 方便找DLL
由于我下的是64位 那就用64位编译器,如果你下的是32位就用32位编译器。MinGW和MSVC都行。
编译成功后,在对应目录下有编译好的文件,我用Release和Debug都编译了一次。
有了这些文件,接下来就是复制 文件,把编译好的复制到你对应的编译器目录下:
如果你是MSVC64编译的就把文件复制到:
C:\Qt\Qt5.12.5\5.12.5\msvc2017_64\bin\ (文件libmysql.dll libmysql.lib libmysqld.dll libmysqld.lib 这是下载的文件)
和
C:\Qt\Qt5.12.5\5.12.5\msvc2017_64\plugins\sqldrivers\目录下(libmysql.dll libmysql.lib libmysqld.dll libmysqld.lib 这是下载的文件 qsqlmysql.dll qsqlmysql.lib qsqlmysqld.dll qsqlmysqld.lib qsqlmysql.a qsqlmysqld.a 这些是编译的文件 )
如果你是有MinGW64编译的就复制到:
C:\Qt\Qt5.12.5\5.12.5\mingw73_64\bin\
和
C:\Qt\Qt5.12.5\5.12.5\mingw73_64\plugins\sqldrivers\目录下
这样,Qt就可以操作MySql了!
如果编译Release时需要main.moc文件, 这个文件在编译后文件目录:.moc/目录下,添加到项目中!