Qt配置MySql数据库驱动(linux) 原创

Qt配置MySql数据库驱动(linux)🍓

更多精彩内容
👉个人内容分类汇总 👈

1、前言🍋

  • 系统:ubuntu18.04
  • Qt版本:5.14.2
  • 编译器:gcc_64
  • MySql开发包版本:6.1.11

2、安装MySql开发包🍍

  • 可以单独下载MySql开发包安装,也可以直接下载MySql安装包(里面包含了开发包),或者使用命令行安装(任选其一就可以)

2.1 MySql安装包🥝

  • 在linux下安装mysql可以使用命令行安装,也可以在官网下载安装包,使用dpkg安装;

  • MySql安装包比较大,如果觉得下载慢可用试试在linux下用下列命令下载;

    • wget -c https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-server_8.0.29-1ubuntu18.04_amd64.deb-bundle.tar
  • 或者进入mysql官网,选择ubuntu系统,版本选择18.04,然后下载捆绑包(包含所有mysql内容,不会遗漏);

在这里插入图片描述

  • 下载后直接解压,然后使用dpkg -i *命令安装所有deb包或者指定安装其中某个安装包;

2.2 准备MySql开发库🍅

  • 进入MySql下载地址,在右上角可以看见有支持各种语言的开发包,这里选择C API;
  • 根据说明可以看出如果要使用api 除了直接安装MySql外还可以在MySql Product Archives下载开发包;

在这里插入图片描述

在这里插入图片描述

  • 下载后使用tar -zxvf 命令解压,并使用mv 命令将文件夹重命名为mysql;

在这里插入图片描述

在这里插入图片描述

3、编译MySql驱动🍄

  • 找到自己Qt安装目录下的mysql驱动源码/opt/Qt5.14.2/5.14.2/Src/qtbase/src/plugins/sqldrivers/mysql;

在这里插入图片描述

  • 进入mysql目录,使用qtcreator mysql.pro 命令打开mysql工程,然后注释掉QMAKE_USE += mysql

在这里插入图片描述

在这里插入图片描述

  • 鼠标在工程文件上右键选择添加库,选择外部库,点击下一步;

在这里插入图片描述

  • 点击浏览,找当之前解压开发包的位置,选择/mysql/lib/libmysqlclient.so,然后如图取消其它的所有勾选;

在这里插入图片描述

  • 会在mysql.pro文件中生成下列三行代码;

在这里插入图片描述

  • 打开qsqldriverbase.pri文件,注释掉include($$shadowed($$PWD)/qtsqldrivers-config.pri),然后添加一行include(./configure.pri)

在这里插入图片描述

  • 然后点击构建就可以了,如果点击构建是报Cannot write file /mkspecs/modules-inst/qt_plugin_qsqlmysql.pri:Cannot create parent qt_plugin.prf错误,不用慌,这是安装qt时权限没给够导致的;

在这里插入图片描述

  • 关闭Qt,使用which qtcreator命令查询qtcreator的位置,然后使用sudo /opt/Qt5.14.2/Tools/QtCreator/bin/qtcreator mysql.pro(使用绝对路径)命令打开mysql工程,再点击窗口左下角的构建就不会报错了;

在这里插入图片描述

在这里插入图片描述

  • 构建完成后就会生成如下1个库文件libqsqlmysql.so(由于Qt版本不同,生成的库文件也有所不同,有的不止一个文件),但生成的库文件不在build-mysql-Desktop_Qt_5_12_12_MinGW_64_bit-Release文件夹中,可以使用sudo find / -name 'libqsqlmysql.so命令搜索文件在哪;

在这里插入图片描述

  • 找到libqsqlmysql.so文件路径后将libqsqlmysql.so文件复制到qt安装路径下的/opt/Qt5.14.2/5.14.2/gcc_64/plugins/sqldrivers文件夹中;

在这里插入图片描述

  • 到这一步就配置完成了;

4、测试MySql驱动配置结果🥑

  • 新创建一个工程,在pro文件中加上Qt += sql
  • 在main.cpp中使用QSqlDatabase::drivers()打印所有可用数据库驱动程序的列表;
  • 注意这里编译也是使用相同的编译器,其它编译器还没有配置;
#include <QSqlDatabase>
#include <QDebug>
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    qDebug()<<QSqlDatabase::drivers();
    return a.exec();
}
  • 没有配置的结果如下:
("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
  • 配置了MySql驱动后打印结果如下:
("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")

在这里插入图片描述

posted @ 2024-08-27 11:54  mahuifa  阅读(0)  评论(0编辑  收藏  举报  来源