Windows下QT编译MySQL驱动(MSVC)

环境:win10 64位系统,QT5.5.1 32位,MySQL5.7.1 32位,vs2010,vsaddin1.2.5

1.第一步:到qt官网下载安装包,下载链接(百度输入qt download即可转到链接) 选择5.5.1,注意要和你安装的vs版本匹配。


安装QT的时候一定要记得把源码也选上,默认的安装里是没有的,所以要自己选上,否则后面编译mysql的时候还需要从qt官网单独下载,解压到D盘根目录(位置随意,只是目录层级太多,解压到盘符根目录方便点)
在这里插入图片描述
然后找到vsaddin下载
在这里插入图片描述
登录mysql官网下载mysql官网

在这里插入图片描述
进入下载页面后,最下面一般是最新的mysql版本,有zip和msi两种可供选择,如果要找老版本,往上找,有一个Looking for previous GA version?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
msi是傻瓜式的那种界面安装,zip要解压并手动写.ini文件配置还有dos敲命令(这个网上很多教程),我选择msi安装,比较简单省事。
安装mysql需要注意,Filter点开有any,32bit,64bit,选择32bit,如果选择以后发现mysqlserver出不来,就说明你下载的mysql不是32位的!需要重新下载。(这里为了和qt的32位版本保持一致,所以必须下载32位的mysql才能编译驱动不然到时候出一堆错)
在这里插入图片描述
之后就是需要修改mysql server的安装路径和数据路径(编译驱动时路径不能有空格,否则会报找不到mysql.h之类的错误,默认安装路径是有空格的需要修改),把鼠标放在蓝色字体上面点击一下,advanced option高级设置选项就出现在右下角,点击就可以修改了,修改路径会有警告,不用理它,不影响安装。(因为我已经安装过了,这里就是示范一下,都一样的)
在这里插入图片描述
然后就是按照网上教程里那样下一步下一步点击就好。

2.第二步,准备工作就绪,就可以开始编译了。
  • 进入开始菜单,QT5.5.1–>5.5–>MSVC 2010(32-bit)–>命令框。如下
  • 在这里插入图片描述
  • 进入QT的src的mysql.pro所在的目录 C:\QT\Qt5.5.1\5.5\Src\qtbase\src\plugins\sqldrivers\mysql
    如果没有就第一步说的下载opensource src,进入 D:\qt-everywhere-opensource-src-5.5.1\qtbase\src\plugins\sqldrivers\mysql
    (注意:盘符不同时,先d: 切换盘符,再cd 进入目录,复制粘贴路径)

执行 qmake “INCLUDEPATH+=C:\MySQL_Server_5.7\include” “LIBS+=C:\MySQL_Server_5.7\lib\libmysql.lib” -o Makefile mysql.pro
注意:-o Makefile可写可不写

在这里插入图片描述

  • 开始菜单–vs2010目录–vs tools–vs命令提示符框
  • 在这里插入图片描述

进入mysql.pro所在目录(方法同上),执行nmake即可。

  • 如果执行过程没有报错,就是这个样子,代表编译ok了。
    编译成功后mysql.pro这个文件夹会生成3个Makefile文件。
    在这里插入图片描述
    在这里插入图片描述
  • 接下来说编译错误情况:
    1.找不到mysql.h 这个是执行qmake时includepath路径存在空格或者路径出错导致。仔细检查下。
    2 mysql.h这个问题解决后不报错了,紧接着报确实stdbool.h,你从网上找了下载放到路径里,结果发现报错更多了,都是语法错误,什么缺少分号,-不是int类型等等的错。
    不用编译了。说明你下载的mysql和你的qt版本不匹配!!!!!
3.第三步,编译成功以后,配置环境,检测
  • 把D:\qt-everywhere-opensource-src-5.5.1\qtbase\plugins\sqldrivers下生成的qsqlmysql.dllqsqlmysqld.dll复制到 C:\QT\Qt5.5.1\5.5\msvc2010\plugins\sqldrivers下面替换原来不能用的驱动。
  • 把C:\MySQL_Server_5.7\lib 目录下的libmysql.dlllibmysql.lib 复制到 C:\QT\Qt5.5.1\5.5\msvc2010\bin 目录下即可。
4. 代码测试
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    testConnMysqlMainWindow w;
    w.show();
    //QPluginLoader loader;
    //loader.setFileName("C:\QT\Qt5.5.1\5.5\msvc2010\plugins\sqldrivers\qsqlmysql.lib");
    //qDebug() << loader.load();  //手动加载驱动竟然失败了,但是数据库已经打开并且连接上了,不知道为什么
    //qDebug() << loader.errorString();

    if(!QSqlDatabase::drivers().contains("QMYSQL"))
        qDebug() << "unload driver";
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setPort(3306);
    db.setDatabaseName("test");  //数据库的名字不是连接的名字
    db.setUserName("用户名");
    db.setPassword("密码");
    if(db.open())
        qDebug() << "open success";
    else
        qDebug() << db.lastError();
    return a.exec();
}

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值