前前言
如果你的Qt显示有
但是还是显示 QMYSQL driver not loaded 的话,按照我的情况如果你的Mysql版本是很新的,那么有可能是Qt不支持此版本的Mysql,可以尝试下载一个旧版本的(我的是5.7.34)
前言
最近想装一下QT,但是在连接MySQL的时候,总是报 QMYSQL driver not loaded。研究了好几天,终于成功装上了,在这里总结一些经验,希望可以帮有需要的人。
一些经验
Qt与mysql连接最主要的部分有两个,一个是qt连接MySQL的插件,一个是MySQL提供的dll库
PART1
先说第一个,也就是qt连接MySQL的插件。这个东西的位置在 D:\Qt\5.12.3\mingw73_64\plugins\sqldrivers
这个文件夹里有好多dll库
注意到我的电脑里是有 qsqlmysql.dll 和 qsqlmysqld.dll 的,但是有些可能没有,这跟QT的版本有关系,据说5.12.3版本之前的都有,之后的就没有了。如果没有这个插件的话,使用
输出的结果里是没有QMYSQL和QMYSQL3的(因为我这里有这两个dll,才显示有QMYSQL的)
如果没有的话也不要紧,上网查一下怎么自己编译出这两个dll,我自己也编译过,不是很麻烦。
PART2
再来说第二个部分,这个部分的库是由MySQL提供的,位置在D:\mysql-5.7.34-winx64\mysql-5.7.34-winx64\lib(就是MySQL安装的位置)
我们需要的就是libmysql.dll 和 libmysql.lib这两个,把他们复制到 D:\Qt\5.12.3\mingw73_64\bin 里面,如果一切正常的话,应该就可以用了。
但是还有可能有一种情况,就是 虽然显示有 MYSQL3 和 MYSQL ,但是连接的时候显示 QMYSQL driver not loaded
我遇到的就是这种情况,原因就是Mysql的版本太新了,我一开始用的是8点多的版本,后来换成5.7.34,就没有问题了。
其实Qt根本不需要你本地装有MySQL,它只是需要libmysql.dll 和 libmysql.lib两个库而已,所以下载的MySQL安装包也不需要安装,只要拿出来这两个文件就了。
总结
可以把QT和MYSQL的连接总结为
QT -> MySQL的driver -> MySQL的dll -> MySQL
我们需要的也就是中间的两个模块,如果使用qDebug()<<QSqlDatabase::drivers();可以看到有MYSQL 和 MYSQL3的话,就说明第一个(MySQL的driver )是没有问题的,如果在此基础上还是QMYSQL driver not loaded的话,就考虑是不是MySQL的版本问题
再深入些
抱着非常好奇的心态,我打算看看MySQL.dll里面到底有什么。使用VS的dumpbin就可以很轻易的查看有dll了(为了这个我还特意装了VS)
可以看到里面主要是SQL提供的函数接口,有一百多个,加上这个dll之后就可以调用这些函数来执行sql了。