在学习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数据库。