完美解决Qt中关于Mysql程序的连接、打包等各类问题

这篇具有很好参考价值的文章主要介绍了完美解决Qt中关于Mysql程序的连接、打包等各类问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分享Qt如何连接Mysql、如何打包Mysql程序,完美解决连接和打包Mysql程序所出现的各类问题。       

在Qt项目开发过程中,如果涉及到数据的存储,那么肯定会用到数据库,本篇文章以Mysql数据库为例,讲述Qt如何连接Mysql、如何打包含有Mysql的程序,并解决客户收到程序后无法加载数据库等各类问题。

目录

1.连接Mysql 

1.1 编译Mysql插件

1.2 连接Mysql(代码部分)

2.Qt中Mysql程序打包

2.1 Qt如何打包

(1)添加图标

(2)Release

(3)打包程序 

 2.2 添加Mysql打包所依赖的库

3.常见的问题与解决方案

1.数据库打开失败:QMYSQL driver not loaded

2.对方收到我们打包的程序后,无法加载数据库的内容

3.连接Mysql时出现 [LspTrace] 或 [LSP] 字样 

4.打包失败,点击exe可执行文件后还是无法打开


1.连接Mysql 

1.1 编译Mysql插件

我使用的Qt版本是Qt 5.12.9 Mysql用的是MySQL 8.0,需要强调的是Qt编译套件的位数一定要和Mysql的位数相同,要么都是32位,要么都是64位,不然编译肯定不会成功。

关于Mysql的连接,首先我们找到Qt的安装目录,如图,将其打开。

qt mysql怎么打包,mysql,数据库,qt

打开后选择与Mysql位数相同的编译套件,然后打开项目文件mysql.pro ,改成和我一样,将第6行注释起来,并根据自己Mysql安装路径修改第10至12行,修改完成后即可编译项目。

qt mysql怎么打包,mysql,数据库,qt

如果编译过程中出现报错Cannot read .../qtsqldrivers-config.pri: No Such file or directory 

打开qsqldriverbase.pri这个文件,按照如图进行修改,注释第4行,添加第5行。

qt mysql怎么打包,mysql,数据库,qt

此时再编译这个项目,就不会报错了。同时我们会在安装Qt的磁盘(比如我就是E盘)下面发现自动生成了一个plugins的目录,如图。

qt mysql怎么打包,mysql,数据库,qt

 这几个库就是Qt连接Mysql所需要的插件,我们把它复制到如图所示的目录下(我用的都是64位)

qt mysql怎么打包,mysql,数据库,qt

然后还需要将 Mysql 的动态库拷贝到 Qt 的编译套件目录中,先找到 Mysql 的动态库 

qt mysql怎么打包,mysql,数据库,qt

复制到如图所示的目录下 

qt mysql怎么打包,mysql,数据库,qt

就此,就可以用Qt连接Mysql啦。

1.2 连接Mysql(代码部分)

在写代码之前,首先应在.pro文件中添加QT += sql

qt mysql怎么打包,mysql,数据库,qt

 添加Mysql所需要的头文件。

#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>

连接代码如下: 

    QStringList list = QSqlDatabase::drivers();   // 显示本机能连接的数据库
    qDebug() << list;
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");  
    //db.setHostName("localhost");                // 如果时连接本地数据库 可以直接填 localhost  或 127.0.0.1
    db.setHostName("127.0.0.1");                  // IP地址
    db.setUserName("username");                   // 数据库用户名
    db.setDatabaseName("db");                     // 所需要打开的数据库的名称
    db.setPassword("password");                   // 数据库密码
    //db.setPort(3306);                           // 端口,若连接的是本地数据库可以不写这一行
    if(!db.open()){                               // 连接数据库
        qDebug() << "失败原因:" << db.lastError().text();
    }else{
        qDebug() << "连接成功!!!";
    }

连接之后就直接对数据进行一系列操作。

    QSqlQuery query;
    QString sql1 = "select * from db";
    query.exec(sql1);

    while(query.next()){
        //取出当前记录中的字段值
        qDebug() << query.value(0).toInt()
                 << query.value("name").toString()
                 << query.value("age").toInt()
                 << query.value(3).toString()
                 << query.value(4).toString();
    }

2.Qt中Mysql程序打包

2.1 Qt如何打包

(1)添加图标

找到一张格式为.ico的图片(图片格式必须是ico),将图标放在工程目录下(与.pro同级),然后在项目工程文件(.pro)中添加一行RC_ICONS = 图标名.ico

qt mysql怎么打包,mysql,数据库,qt

(2)Release

Debug改为Release,然后重新编译项目

qt mysql怎么打包,mysql,数据库,qt

 编译完成后你可以在release文件目录下找到你设置好图标的可执行文件

qt mysql怎么打包,mysql,数据库,qt

(3)打包程序 

在任何一个地方新建一个文件夹(注意不要有中文路径),然后将刚才看到的release目录下的可执行程序复制粘贴进去,然后点击左下角的开始菜单,找到Qt,点击如图的Qt 5.12.9(MinGW 7.3.0 64-bit)(根据自己之前编译的位数)。

qt mysql怎么打包,mysql,数据库,qt

 打开QT工作台 输入 cd /d 刚创建的文件夹路径\文件名  然后回车键

qt mysql怎么打包,mysql,数据库,qt

 然后输入 windeployqt 可执行文件名.exe,回车键它就会自动进行编译,将所有的库都添加进这个文件夹。

qt mysql怎么打包,mysql,数据库,qt

qt mysql怎么打包,mysql,数据库,qt

此时就可以双击可执行文件打开软件啦,也可以压缩打包发给别人,但是如果你在程序里添加了Mysql相关的东西,这样打包发送的话对方并不能连接到你的数据库和查看到库里的数据。还需要添加几个相关的库才行

qt mysql怎么打包,mysql,数据库,qt

 2.2 添加Mysql打包所依赖的库

一共有四个库需要添加,前两个是在MySQL安装目录下的 libmysql.dll 和 libmysql.lib

qt mysql怎么打包,mysql,数据库,qt

 后面两个需要去官网下载,网址为:MySQL :: MySQL Community Downloadshttps://dev.mysql.com/downloads/

点击如图红框内的链接 

qt mysql怎么打包,mysql,数据库,qt

根据你的位数选一个安装,我装的是第2个 ,安装解压后进入lib64,找到 libcrypto-1_1-x64.dll 和 libssl-1_1-x64.dll 两个动态库。这就是另外两个所需要的库,将这四个库一起添加到刚才打包的文件中。

qt mysql怎么打包,mysql,数据库,qt

qt mysql怎么打包,mysql,数据库,qt

 如此操作后,别人也可以连接至数据库并查看到程序里Mysql中的内容啦。

3.常见的问题与解决方案

所有的流程,如果是按我上面一步一步来的话应该是不会报错的,这里我挑几个常见的问题

1.数据库打开失败:QMYSQL driver not loaded

出现这个提示有几种原因:

一是连接数据库失败,如果你的程序在这两行代码后显示的输出中没有QMYSQL,说明你的Qt没有连接Mysql成功,此时应检查你使用的Qt编译套件的位数是否与Mysql位数是一致的,若一致,请根据上面1.1的步骤检查。

    QStringList list = QSqlDatabase::drivers();   // 显示本机能连接的数据库
    qDebug() << list;

 qt mysql怎么打包,mysql,数据库,qt

 二是缺少安全模块的动态库,就是上面2.2所下载的两个动态库,按照步骤下载,然后把这两个动态库拷贝到和连接数据库的可执行程序同一级目录中就可以了。

2.对方收到我们打包的程序后,无法加载数据库的内容

这是由于在打包时,没有添加Mysql所依赖的动态库所致,可以按照上面2.2的步骤添加以下4个动态库

qt mysql怎么打包,mysql,数据库,qt

3.连接Mysql时出现 [LspTrace] 或 [LSP] 字样 

qt mysql怎么打包,mysql,数据库,qt

解决方法:1.以管理员身份进入命令提示符窗口
                  2.输入 netsh winsock reset ,然后敲下回车键
                  3.重启电脑,就再无提示                

qt mysql怎么打包,mysql,数据库,qt

4.打包失败,点击exe可执行文件后还是无法打开

首先检查打包文件的文件是否有中文路径,然后是Qt程序也不能有中文路径,路径正常后按照上面2.1的步骤即可打包成功。

这是我所归纳的所有关于Qt中连接Mysql和打包Mysql程序的步骤、方法,如果对您有帮助,别忘了点个赞收藏一下,如果说的有什么不对,欢迎在评论区指出,谢谢大家!文章来源地址https://www.toymoban.com/news/detail-776635.html

到了这里,关于完美解决Qt中关于Mysql程序的连接、打包等各类问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 完美解决Pyinstaller打包selenium去除driver黑框问题。

    首先找到selenium包源码文件service.py中的start函数,文件路径如下: Libsite-packagesseleniumwebdrivercommonservice.py 找到文件中start函数,具体代码如下: 修改start函数参数creationflags=self.creationflags为creationflags=134217728,具体代码如下: 在services.py开头添加一行代码 然后修改参数crea

    2024年02月12日
    浏览(54)
  • Qt软件打包后报错“无法定位程序输入点于动态链接库.exe上。”解决办法(超详细,看完不会怪我)

    目录  前言 一、出现类似如下界面:  二、通过尝试分析,这个界面出现的原因是因为自己没有设置环境变量 三、其次右击打开主菜单,选择系统选项 四、选择右边的高级系统设置  五、点击环境变量 六、再系统变量里面找到Path路径 七、点击编辑添加系统环境变量,将自

    2024年02月15日
    浏览(55)
  • 快速+完美+准确解决SpringBoot项目打包后的SNAPSHOT.jar中没有主清单属性的问题

    目录 问题再现 问题解决 结果 xxxx-0.0.1-SNAPSHOT.jar中没有主清单属性 1 出问题的pom.xml文件 2 正确的pom.xml文件 请注意改变了什么? 答:删除掉 skiptrue/skip 即可了 改完记得刷新xml文件!!!! 运行成功了, 同时我们发现了正确打包下的文件远比错误打包下的文件要大  

    2024年02月05日
    浏览(56)
  • Qt程序打包成一个单独exe的方法 Qt程序打包成一个单独exe的方法

    目录 Qt程序打包成一个单独exe的方法 程序发布 程序打包 问题 Qt程序发布及打包,同时修改可执行文件的图标。本教程使用Qt自带的  windeployqt  工具外加 Enigma Virtual Box 打包工具。首先需要知道的是,Qt程序发布需要的程序是用  Release  方式编译的。下面看一下具体的操作。

    2024年02月11日
    浏览(44)
  • QT可执行程序打包成安装程序

    目录 1.将QT程序先放到一个文件中 2.下载QtInstallerFramework-win-x86.exe 3.将setup.exe单独拷贝出来,进行安装测试 4.测试安装后的程序是否可执行 (1)QT切换到release模式,编译后在构建目录生成可执行文件,例如myqml.exe,把该文件复制到一个单独文件夹;         a.QT切换到rel

    2024年02月10日
    浏览(30)
  • Qt程序打包exe

    步骤一:Release编译 步骤二:将步骤一生成的Release文件夹中的exe文件单独拷贝到另一个文件夹,如 D:Program FilesUI 步骤三:打开命令行工具 步骤四:在命令行中首先将路径定位到步骤二中存放exe文件的文件夹: cd D:Program FilesUI ,然后使用 windeployqt 工具命令: D:Qt25.14.1m

    2024年02月13日
    浏览(43)
  • Qt的程序打包

    设置应用程序的图标,在Qt的pro中加入 RC_ICONS = 图标名.ico,到网上找个在线转换ico的工具即可, 1.qt的编译模式切换到release版本  2.编译运行后找到自己放代码的位置,release版本的  3.新建一个空文件夹,把exe程序单独拷出来放到空文件夹中 4. 打开Qt的命令行窗口,windeployq

    2024年02月07日
    浏览(50)
  • linux QT程序打包

    GitHub - probonopd/linuxdeployqt: Makes Linux applications self-contained by copying in the libraries and plugins that the application uses, and optionally generates an AppImage. Can be used for Qt and other applications GitHub - NixOS/patchelf: A small utility to modify the dynamic linker and RPATH of ELF executables 1、可以到上面链接上下载源代码

    2024年01月16日
    浏览(56)
  • QT程序打包成安装包

    1、将QT程序先放到一个文件中 (1)QT切换到release模式,编译后在构建目录生成可执行文件,例如myqq.exe,把该文件复制到一个单独文件夹; (2)在开始菜单找到QT,在里面找cmd命令行程序,类似“Qt 5.14.2 (MinGW 7.3.0 32-bit)”,点击运行;                                 (

    2024年02月09日
    浏览(35)
  • Linux下QT程序打包

            网上有关QT程序打包的教程大多都是Windows下的教程,有关Linux下QT程序打包的教程很少,而且大多说的不是很详细,在这里我整理了以下有关Linux下QT程序打包的方法,仅供大家参考学习,有关Windows下QT程序打包的方法可以看我另一篇博客“QT项目超详细打包教程。  

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包