qt6 配置MySql驱动

qt6 没有内置mysql驱动,我们从源代码编译一个驱动,才能使用它。

前置条件:

  • 从已经下载或安装了mysql服务目录下找到libmysql.dll、libmysql.lib文件等文件所在文件夹等
  • 下载qt源码

步骤:

  1. 修改配置文件,让编译器能找到相关的mysql库文件
  2. 进行编译,生成对应的mysql驱动
  3. 把mysql驱动copy到qt对应的驱动目录下

对涉及步骤简要说明如下:

下载或者找到mysql:

下载mysql8.0数据库(官网:MySQL :: MySQL Community Downloads)解压过程最好不要带中文路径。

如果你本地已经安装mysql 服务,需要找到mysql安装路径。

我是通过任务管理器找到Mysql安装位置的:

下载对应版本的qt源码:

先找到自己用的qt版本,我安装了多个版本 主要用6.6.3。

下载对应版本的qt源码:Index of /archive/qt/6.6/6.6.3/submodules

修改cmakelist配置文件:

1、准备工作:

新建一个文件夹(不包含空格和中文字符),将解压后或者安装mysql后的MySQL Server 下的include和lib两个文件夹拷贝到这个新建文件夹中

2、修改cmakelist文件:

首先在Qt开发环境中打开刚刚解压过得qtbase-everywhere-src-6.6.3\src\plugins\sqldrivers目录下的cmakeList文件,增加三行。

SET(FEATURE_sql_mysql ON)
SET(MySQL_INCLUDE_DIR "D:/temp/mysqltmp/include")
SET(MySQL_LIBRARY "D:/temp/mysqltmp/lib/libmysql.lib")

路径当然修改为自己的文件夹了。

3、右键重新构建它。

4、在构建目录plugins\sqldrivers找到构建的库文件qsqlmysql.dll

5. 将上述构建的qsqlmysql.dll文件拷贝至安装QT编译环境的plugins\sqldrivers目录。


6 test
    // iteator all database driver
    QStringList drivers = QSqlDatabase::drivers();
    QStringList::iterator it;
    for (it = drivers.begin(); it != drivers.end(); ++it)
    {
        qDebug() << *it;
    }

ps:

网上一些文章有如下步骤,我没用这一步:

 拷贝刚刚解压过得mysql-8.0.38-winx64中的lib文件夹中的“libmysql.dll、libmysql.lib”两个文件

将上述两个文件“libmysql.dll、libmysql.lib”复制粘贴到Qt的安装目录下, 如图:

顺便解释一下这2个文件:

libmysql.dll和libmysql.lib是MySQL数据库客户端连接器的重要组成部分,它们在Windows平台上扮演着不同的角色,分别用于动态和静态链接。

libmysql.dll

  • 定义:libmysql.dll是一个动态链接库(Dynamic Link Library,简称DLL)文件,它是MySQL数据库客户端的一部分,用于在Windows系统上与MySQL数据库服务器进行通信。
  • 功能:当应用程序需要连接数据库时,libmysql.dll负责处理网络通信、数据格式的转换以及SQL命令的执行。它为开发者提供了一个稳定且高效的方式来与MySQL数据库进行交互,无需深入了解网络和数据库操作的底层细节。
  • 特点
    • 动态链接库允许多个应用程序共享相同的代码和资源,从而减少了内存占用,并提高了系统效率。
    • DLL可以单独更新,这意味着当库文件中有修复或改进时,只需要替换相应的DLL文件即可,而不需要重新编译或重新安装整个应用程序。
  • 使用场景:在运行时,如果应用程序依赖libmysql.dll,那么系统需要在应用程序的目录下或环境变量指定的路径中找到这个文件,以便加载和解析其中的函数和数据。

libmysql.lib

  • 定义:libmysql.lib是一个静态链接库(Static Library)文件,它包含了连接和操作MySQL数据库所需的函数定义。
  • 功能:在编译应用程序时,开发者可以将libmysql.lib链接到他们的应用程序中,这样程序就包含了所有必要的代码来执行MySQL相关的操作,如连接数据库、执行查询等。
  • 特点
    • 静态链接库在编译时被直接整合到生成的可执行文件中,因此运行时不需要依赖外部的库文件。
    • 这增强了应用程序的独立性,但同时也可能增加生成的可执行文件的大小。
  • 使用场景:在编程和软件开发中,libmysql.lib是C或C++开发者常用的库文件之一,它使得开发者能够轻松地通过MySQL C API与MySQL数据库进行交互。

综上所述,libmysql.dll和libmysql.lib在MySQL数据库客户端开发中扮演着不同的角色,分别用于动态和静态链接。开发者可以根据具体需求选择使用其中一个或两个库文件来构建他们的应用程序。

上一篇:Guava 源码中7种设计模式的实现分析


下一篇:Java如何解决同时出库入库订单号自动获取问题