码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • QT连接MySQL数据库,手动编译动态链接库,解决QMYSQL driver not loaded错误


    添加补充的的:
    注意:qsqlmysqld.dll 与 qsqlmysql.dll都要放入sqldrivers文件夹,一个是编译debug模式时用的,一个是release模式用的

    如果打包还要把MySQL安装目录下的bin目录中的libmysql.dll手动复制到打包目录下

    首先,在网上有些说法是直接把MySQL里的动态链接库libmysql.dll放到QT安装目录下的,是无法解决QMYSQL driver not loaded错误错的,不知道这些人有没有测试。通过查看QT安装目录插件文件夹中关于数据库的动态链接库,没有mysql的。路径为:

    ***\Qt\Qt5.12.12\5.12.12\mingw73_64\plugins\sqldrivers
    
    • 1

    在这里插入图片描述
    MySQL5.7的64位库已经打好了,可以直接下载:https://download.csdn.net/download/ren365880/86247243

    手动编译

    首先打开QT安装目录下的源码包,找到mysql的文件夹:我的路径为下:

    D:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql
    
    • 1

    修改里面的2个文件,请用QT打开,因为修改后还需要用QT编译。

    打开mysql.pro文件
    注释掉QMAKE_USE += mysql
    结尾添加几行代码:
    # 添加你自己的mysql安装目录下的include文件夹
    INCLUDEPATH += "C:\tool\MySQL\include"
    # 添加你的mysql安装目录下的lib文件夹下的libmysql.lib文件
    LIBS += "C:\tool\MySQL\lib\libmysql.lib"
    # 设置编译好的qmysql.dll放置的目录,不然你可能不知道会生成在哪。
    DESTDIR = ../mysql/mysqlDll
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    打开qsqldriverbase.pri文件
    注释掉include($$shadowed($$PWD)/qtsqldrivers-config.pri)
    当前路径的上层路径sqldrivers\中并没有这个qtsqldrivers-config.pri文件,只有configure.pri文件。
    改为:
    #include($$shadowed($$PWD)/qtsqldrivers-config.pri)
    include(./configure.pri)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    修改完成这里后点击QT的锤子图标进行编译,编译过程中如果失败看一下路径是不是有中文,空格之类的。
    成功后如下图:
    在这里插入图片描述
    把qsqlmysqld.dll复制到QT安装目录下的

    **\Qt\Qt5.12.12\5.12.12\mingw73_64\plugins\sqldrivers
    
    • 1

    这是再去链接MySQL就成功了。

    如何链接MySQL,连接多个数据库

    首先项目的.Pro文件中加入

    QT += sql
    
    • 1

    mainwindow.h文件中引入库

    #include 
    
    • 1

    然后再.cpp中就可以使用了

     第二个参数为连接的名称,这里设置的不同,就可以有不同的链接对象,能连接多个数据库
     QSqlDatabase from = QSqlDatabase::addDatabase("QMYSQL","from");
     from.setHostName(ip);127.0.0.1
     from.setPort(port);3306
     from.setDatabaseName(ui->fromDatabase->text());数据库名
     from.setUserName(name);账号
     from.setPassword(passowrd);密码
     fromStatus = from.open();是否打开
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

  • 相关阅读:
    saas化多租户-动态数据源
    牛客网:NC41 最长无重复子数组
    easyExcel生成个性化表格(自定义行高,合并,字体,去网格线),前后端分离开发下,返回错误的JSON数据给前端
    算法分析与设计CH6:堆排序详解(文末附优先队列完整代码)
    【FATE联邦学习】FATE框架的大坑,使用6个月有感
    java 版本企业招标投标管理系统源码+功能描述+tbms+及时准确+全程电子化
    SSH项目集成DM达梦数据库
    【Mysql】——索引的深度理解
    博客园商业化之路:融资做与众不同的众包平台,让开发能力成为一种服务
    springboot + vue实战
  • 原文地址:https://blog.csdn.net/ren365880/article/details/125909763
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号