windows系统下解决Qt链接MySQL数据库时出现的问题:QMYSQL driver not loaded

在学习Qt的过程当中,遇到了没法链接数据库的状况:mysql

#include <QApplication>
#include <QtSql>
#include <QMessageBox>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //显示已有的数据库driver
    qDebug()<<QSqlDatabase::drivers();

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("dbname");
    db.setUserName("root");
    db.setPassword("password");
    
    if (!db.open()) {
       QMessageBox::critical(0, QObject::tr("Database Error"),
                              db.lastError().text());
    }

    return a.exec();
}

控制台的输出为:sql

如上所示,MySQL driver是存在的,可是仍然提示错误:QMYSQL driver not loaded。数据库

缘由是程序中缺乏libmysql.dll。学习

这个动态链接库在MySQL的安装文件的lib目录下,例如个人MySQl安装在C盘,则libmysql.dll位于:spa

C:\MySQL\MySQL Server 5.7\lib\

找到libmysql.dll,将它复制到你的exe所在的目录中,而后再运行程序,此时就能够连上MySQL了。code

注意:32位的qt程序必须使用32位的libmysql.dll,不能用64位的。一样64位的程序使用64位的libmysql.dll。get

libmysql.dll能够从MySQL安装文件的lib目录下找到。qt

若是没有对应的版本,也能够这里下载:it

链接:http://pan.baidu.com/s/1kVKwLuRio

密码:v6uy

经过上面的方法已经能够链接数据库了, 可是每次都要把libmysql.dll复制到exe所在目录,很麻烦,因此在日常写程序时,可使用一个方便的方法:

将libmysql.dll复制到Qt安装文件的bin目录下,例如个人bin目录:

D:\Qt\Qt5.7.0\5.7\mingw53_32\bin\

复制到bin目录下后,之后就不须要往exe所在目录复制libmysql.dll了,程序能够正确链接MySQL数据库。

相关文章
相关标签/搜索