Qt中mysql和达梦数据库的驱动编译详细步骤

目录

1.简介

2.前置准备

3.mysql数据库驱动编译

3.1.Windows平台编译

3.2.Linux平台编译

4.达梦数据库驱动编译

4.1.Windows平台编译

4.2.Linux平台编译

[5.Qt6 编译步骤(CMake 方式)](#5.Qt6 编译步骤(CMake 方式))

5.1.mysql

5.2.达梦数据库


1.简介

浅谈Qt中的QSql模块整体设计

之前讲了Qt中数据库部分的整体设计,分三层架构 设计,今天需要编译的数据库驱动是位于驱动适配层。

2.前置准备

1.安装 Qt 及源码

  • 通过 Qt Maintenance Tool 安装对应版本 Qt,必须勾选 Sources 组件(驱动源码在其中)
  • 安装匹配的编译器(MinGW/MSVC for Windows,GCC for Linux)

2.获取 MySQL 客户端库

  • Windows:下载MySQL Connector/C,解压到无空格路径(如C:\mysql-connector-c
  • Linux:通过包管理器安装libmysqlclient-dev(Debian/Ubuntu)或mysql-connector-odbc(CentOS)

3.安装 DM8 达梦数据库,拿到这两个目录

  • 头文件:dmdbms/include
  • 库文件:dmdbms/lib64(64 位)

4.环境匹配

  • 确保 Qt、编译器、MySQL 库架构一致(均为 32 位或 64 位)
  • 将 MySQL 的 bin 目录添加到系统 PATH 环境变量

3.mysql数据库驱动编译

3.1.Windows平台编译

Qt的源码目录集合、中文文档和各版本安装教程

1.切换到Qt的mysql驱动源码目录(以Qt5.15.2为例):

.\Qt\Qt5.15.2\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql

(路径根据实际安装位置调整)

2.修改 mysql.pro 配置

mysql的库文件不分Debug和Release版本

cpp 复制代码
TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

INCLUDEPATH += G:/ThirdParty/MySQL/Windows/include

LIBS += -LG:/ThirdParty/MySQL/Windows/lib/x64-Release -llibmysql

DESTDIR = $$PWD/libdriver

3.修改这个目录上级目录的qsqldriverbase.pri

屏蔽这一行:

4.执行 qmake 生成 Makefile

cpp 复制代码
qmake mysql.pro

(若有多个 Qt 版本,使用完整路径 qmake,如D:\Qt\5.15.2\mingw81_64\bin\qmake.exe

5.从vs2022的命令行进入执行nmake

最后在libdirver目录下生成了mysql数据库驱动文件:

cpp 复制代码
qsqlmysql.dll
qsqlmysql.lib
qsqlmysql.pdb
qsqlmysqld.dll
qsqlmysqld.lib
qsqlmysqld.pdb

6.安装驱动

  • 编译生成的qsqlmysql.dllqsqlmysqld.dlllibdriver目录下
  • 复制到 Qt 安装目录的插件文件夹:D:\Qt\5.15.2\mingw81_64\plugins\sqldrivers
  • 将 MySQL 的libmysql.dll复制到 Qt 编译器的 bin 目录(如D:\Qt\5.15.2\mingw81_64\bin

7.测试代码

cpp 复制代码
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);
    
    qDebug() << "Available drivers:" << QSqlDatabase::drivers();
    
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("test");
    db.setUserName("root");
    db.setPassword("123456");
    
    if (db.open()) {
        qDebug() << "Connected to database successfully!";
        QSqlQuery query;
        query.exec("SELECT VERSION()");
        if (query.next()) {
            qDebug() << "MySQL version:" << query.value(0).toString();
        }
        db.close();
    } else {
        qDebug() << "Database connection failed:" << db.lastError().text();
    }
    
    return a.exec();
}

在.pro 文件中添加 QT += sql)

3.2.Linux平台编译

与Windows平台的编译步骤差不多,在细节稍微有点差别:

1.修改 mysql.pro 配置

cpp 复制代码
TARGET = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

#QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)

INCLUDEPATH += /home/zdxiao/dev/mysql/include

LIBS += -L/home/zdxiao/dev/mysql/lib/x64-Release -lmysqlclient

DESTDIR = $$PWD/libdriver

2.执行 qmake和make

cpp 复制代码
qmake mysql.pro
sudo make
sudo make install  # 自动安装到Qt插件目录

4.达梦数据库驱动编译

4.1.Windows平台编译

cpp 复制代码
TARGET = qsqldm

HEADERS += $$PWD/qsql_dm_p.h
SOURCES += $$PWD/qsql_dm.cpp $$PWD/main.cpp

#QMAKE_USE += dm
QMAKE_LFLAGS += C:\dm7_20210303_x86_win_32\source\include\dmdpi.lib
INCLUDEPATH += C:\dm7_20210303_x86_win_32\source\include
LIBPATH += C:\dm7_20210303_x86_win_32\source\include

OTHER_FILES += dm.json
include($$PWD/qsql_dm.pri)

PLUGIN_CLASS_NAME = QDMDriverPlugin
include(../qsqldriverbase.pri)

DESTDIR = $$PWD/libdriver

其它的与mysql的Windows平台驱动编译差不多;还有驱动安装稍有点差别,达梦是把C:\dmdbms\bin\dmdpi.dll复制到你的 exe 运行目录 或 Qt 的 bin 目录。还有把dmdpi.dll的依赖库要一起放到exe的运行目录:

cpp 复制代码
dmcalc.dll
dmcfg.dll
dmclientlex.dll
dmcomm.dll
dmcpr.dll
dmcvt.dll
dmcyt.dll
dmdpi.dll
dmdta.dll
dmelog.dll
dmmem.dll
dmmout.dll
dmos.dll
dmstrt.dll
dmutl.dll

用上面的测试代码通过"QDM"名称把达梦数据库加载起来,经过验证测试OK。

4.2.Linux平台编译

与mysql在linux平台的数据库驱动编译差不多,就不在这里赘述了。

5.Qt6 编译步骤(CMake 方式)

5.1.mysql

1.创建构建目录

cpp 复制代码
cd ~/Qt/6.9.3/Src/qtbase/src/plugins/sqldrivers
mkdir build-mysql
cd build-mysql

2.执行 CMake 配置

cpp 复制代码
# Windows MSVC
cmake -G "Visual Studio 17 2022" -A x64 -DFEATURE_sql_mysql=ON -DMySQL_INCLUDE_DIR="C:/mysql-connector-c/include" -DMySQL_LIBRARY="C:/mysql-connector-c/lib/libmysql.lib" -DCMAKE_INSTALL_PREFIX="D:/Qt/6.9.3/msvc2022_64" ..

# Linux
~/Qt/6.9.3/gcc_64/bin/qt-cmake -G Ninja -DFEATURE_sql_mysql=ON -DMySQL_ROOT="/usr/bin/mariadb" -DCMAKE_INSTALL_PREFIX="~/Qt/6.9.3/gcc_64" ..

(根据实际路径调整参数)

3.编译并安装

cpp 复制代码
cmake --build . --target install --config Release

(Windows MSVC 可添加 --config Debug 编译调试版本)

5.2.达梦数据库

cpp 复制代码
cd D:\Qt\6.5.3\Src\qtbase\src\plugins\sqldrivers
mkdir build-dm
cd build-dm

cmake .. -G "Visual Studio 17 2022" -A x64 ^
-DFEATURE_sql_mysql=ON ^
-DMySQL_INCLUDE_DIR="C:/dmdbms/include" ^
-DMySQL_LIBRARY="C:/dmdbms/lib64/dmdpi.lib" ^
-DCMAKE_INSTALL_PREFIX="D:/Qt/6.5.3/msvc2022_64"

cmake --build . --config Release --target install
相关推荐
_OP_CHEN2 小时前
【MySQL数据库基础】(五)MySQL 数据类型深度解析:选对类型 = 性能拉满!
linux·开发语言·数据库·sql·mysql·数据类型·c/c++
chuxinweihui2 小时前
MySQL复合查询
数据库·mysql
被AI抢饭碗的人2 小时前
MYSQL基础(二)
数据库·mysql
优秀的老黄2 小时前
MySQL配置从库
linux·数据库·mysql
艾莉丝努力练剑2 小时前
【MYSQL】MYSQL学习的一大重点:MYSQL库的操作
android·linux·运维·数据库·人工智能·学习·mysql
JuneXcy2 小时前
第5讲 MySql数据操纵语句--复杂查询
数据库·sql·mysql
顶点多余2 小时前
Mysql-库操作详解
数据库·mysql
蓝天智能2 小时前
CMakeLists.txt配置详细介绍
c语言·开发语言·qt
娇娇yyyyyy5 小时前
Qt编程(3): 信号和槽函数
开发语言·数据库·qt