Using MySQL in Qt5.7 on Windows
最近有一个小项目要用到MySQL作为数据库。于是就试了一下Qt的MySQL的driver。先按照教程一步一步来。
- 在.pro中添加SQL库
QT += sql
添加头文件
#include < QSqlDatabase>
代码如下:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("bigblue");
db.setDatabaseName("flightdb");
db.setUserName("acarlson");
db.setPassword("1uTbSbAs");
bool ok = db.open();
运行,得到以下结果:QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
嗯哼,这是几个意思?
去看Qt安装目录下面,qmysql.lib qmysql.dll这俩货都有啊,怎么还不支持了呢。
难道是我使用的姿势不对。好吧,那趴着用一下试试(Google)。
方案一
网上有人说你需要自己编译一下mysql的code。WTF,老子用你的IDE就是图方便,这怎么还需要自己编译了呢。算了还是按照这个来吧。
先把别人的帖子链接贴一下:Create MySQL driver for Qt5 on Windows.
步骤大致如下:
- 首先你要现在一个MySQL Community Server
- 然后进到Qt MySQL的source code目录,
\Qt\QT %version%\Sources\qtbase\src\plugins\sqldrivers\mysql\
- 执行一下command
qmake “INCLUDEPATH+=%mysql%\include” “LIBS+=%mysql%\lib\libmysql.lib” -o Makefile mysql.pro
mingw32-make - Copy qsqlmysql.dll and qsqlmysqld.dll from** \Qt\Qt%version%\Sources\qtbase\plugins\sqldrivers** to \Qt\%version%\5.0.1\mingw47_32\plugins\sqldrivers.
- Copy libmysql.dll from %mysql%\lib to C:\Windows
按照上面的步骤,在第三步的时候出现了错误。
(⊙o⊙)…,蛋疼。然后,我他妈就把Qt重新装了一下。发现还是build失败 凸(艹皿艹 )了 失败了呢
方案二
后来又看到说qmysql.dll依赖于libmysql.dll。后一个是MySQL提供的。奥,既然qmysql.dll已经存在了,那应该是不是把libmysql.dll放在**C:\Windows**下面就可以了? 说干就干。放完之后,发现。┗|`O′|┛ 嗷~~ My God!!!! 依然是**QSqlDatabase: QMYSQL driver not loaded**。 艹了。 等等,mySQL的lib库里面怎么还有一个libmysql**d**.dll呢。难道这是debug版本。于是把这个libmysqld.dll libmysqld.lib一起放到C:\windows下面。 哈哈哈哈哈哈,居然成功了。吊炸天 **binggo**
解决方案
- 首先下载MySQL server版本,地址 http://dev.mysql.com/downloads/mysql/。 请一定要选择Windows (x86, 32-bit), ZIP Archive 这一个。install出来的版本不存在libmysqld.dll
- 解压之后把libmysqld.dll libmysqld.lib libmysql.dll libmysql.lib拷贝到C:/Windows下面即可