QDM 编译

QT 通过 QT SQL 模块提供了对 SQL 数据库的支持,QT SQL 模块接口是独立于数据库的,它可以通过数据库驱动插件和不同的数据库接口进行通信,达梦数据库提供了 QDM 对 QT SQL 模块进行支持。本文主要介绍 QDM 的编译,并提供了相应的例子对数据库进行操作演示。

开发环境搭建

软件 版本
数据库版本 DM 8
QT 5.12.1

安装 DM 数据库

请参考 QODBC 编译章节安装 DM 数据库部分。

编译环境准备

  1. 编译 QDM 需要引用 QT src 中的相关文件,所以编译前我们需要先安装 QT,并在安装时选择 Source 组件。

Source组件

安装完成后在安装目录下应包含如下两个目录:

安装目录

  1. G++, GCC 版本最好为 5.4 及以上,否则编译过程中可能会出现下面此类报错:
g++: 错误:unrecognized command line option '-Wdate-time'

此次编译环境版本为:

编译环境版本

  1. 请前往达梦云适配中心下载试用下载 QT QDM 接口源码。

编译 QDM 动态库

本机 QT 安装目录为 /opt/Qt5.12.1 ,因为每个人的安装目录都不一致,所以定义 QTDIR=/opt/Qt5.12.1/5.12.1。

  1. 上传 QDM 源码到对应目录

上传 qt_src\plugins_sqldrivers\dm_56 到 ​QTDIR/Src/qtbase/src/plugins/sqldrivers,并改名为 dm;上传 qt_src\sql_drivers\dm 到 QTDIR/Src/qtbase/src/sql/drivers 目录,没有此目录可以自行创建。

上传QDM

  1. 生成 Makefile

进入 $QTDIR/Src/qtbase/src/plugins/sqldrivers/dm 目录执行:

qmake "INCLUDEPATH+=/home/dmdba/dm/dmdbms/include" "LIBS+=/home/dmdba/dm/dmdbms/include/libdmdpi.a -ldl"  "DEFINES+=DM64" "CONFIG+=debug_and_release" dm.pro

其中的 INCLUDEPATH 和 LIBS 变量目录需要根据本机环境进行更改。

Makefile

  1. 编译

执行 make debug 命令,编译完成后会生成 libqsqldm.so 文件,生成目录由 Makefile.Debug 的 DESTDIR 变量决定。

编译

  1. 拷贝 libqsqldm.so 文件到对应目录

QT 的数据库插件文件一般放在 $QTDIR/gcc_64/plugins/sqldrivers/ 目录,不然 QT 程序无法加载,所以编译完成后我们需要拷贝文件到此目录。

拷贝

数据库连接

上面我们已经完成了 QDM 的编译,下面我们就通过一个简单的例子来检查插件是否能够正常使用。

新建工程

使用 qtcreator 工具新建一个 Qt Console AppLication 工程 qdmtest:

新建

编写代码

因为需要访问 QT SQL 模块,所以需要在 qdmtest.pro 文件中添加:

QT += sql
INCLUDEPATH += /opt/Qt5.12.1/5.12.1/gcc_64/include/QtSql

编写

main.cpp 编译代码进行登录数据库并查询数据库版本,注意此处指定 driver 为 QDM:

driver

编译运行

选中项目右键进行构建编译,也可以在终端通过命令进行编译,编译成功后即可运行。

编译运行

开发示例

基本操作示例

具体代码示例参考 : QODBC 编译

代码段仅需要做如下修改即可执行:

原 QODBC 接口:QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
QDM 接口:QSqlDatabase db = QSqlDatabase::addDatabase("QDM");

编译中常见报错

  1. QT SQL 类头文件未找到

需要在 .pro 文件添加 INCLUDEPATH += $QTDIR/gcc_64/include/QtSql

  1. 对 'QSqlDatabase::defaultConnection' 未定义的引用

这是因为编译时未连接 QT SQL 动态库导致,在 .pro 文件添加 QT += sql 解决。

  1. 编译报错 cannot find –lGL

动态库路径不对导致,QT 默认查找 /usr/lib 目录下文件,可以通过 locate 定位,然后 ln -s 创建软连接解决

  1. QSqlDatabase: QDM driver not loaded

未加载到libqsqldm.so文件,需要拷贝此文件到正确目录:

cp libqsqldm.so $QTDIR/gcc_64/plugins/sqldrivers
微信扫码
分享文档
扫一扫
联系客服