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

原创
2016/08/04 18:04
阅读数 1.4W

在学习Qt的过程中,遇到了无法连接数据库的情况:

#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();
}

控制台的输出为:

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

原因是程序中缺少libmysql.dll。

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

C:\MySQL\MySQL Server 5.7\lib\

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

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

libmysql.dll可以从MySQL安装文件的lib目录下找到。

如果没有对应的版本,也可以这里下载:

连接:http://pan.baidu.com/s/1kVKwLuR

密码:v6uy

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

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

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

复制到bin目录下后,以后就不需要往exe所在目录复制libmysql.dll了,程序可以正确连接MySQL数据库。

 

展开阅读全文
Qt
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部