麒麟-QT-ODBC-达梦

bash 复制代码
xrandr
xrandr -s 1680x1050

1.搭建QT开发环境

下载并图形化安装qt

bash 复制代码
1.安装QT
chmod a+x qt-opensource-linux-x64-5.12.12.run
yum install libxkbcommon-x11
yum install gcc gcc-c++ make glibc-devel libstdc++-devel mesa-libGL mesa-libGL-devel
./qt-opensource-linux-x64-5.12.12.run


2.修改环境变量
vim ~/.bashrc

export QTDIR=/opt/Qt5.12.12/5.12.12/gcc_64  # Qt 主程序路径
export PATH=$QTDIR/bin:$PATH
export QT_PLUGIN_PATH=/opt/Qt5.12.12/5.12.12/gcc_64/plugins/sqldrivers/  # Qt 插件路径(如数据库驱动)
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH


export ODBCDM_HOME=/usr/local/unixODBC   # ODBC
export PATH=$ODBCDM_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ODBCDM_HOME/lib:$LD_LIBRARY_PATH

export DMHOME=/home/dmdba/dmdbms        #DM 这部分添加上 root才能访问。否则只能dmdba访问
export LD_LIBRARY_PATH=$DMHOME/bin:$LD_LIBRARY_PATH

source ~/.bashrc
 
验证
qmake -v

2.QT访问达梦

2.1Linux 环境创建 ODBC 数据源

C/C++ | 达梦技术文档

bash 复制代码
tar -zxvf libqsqlodbc.so.tar.gz -C  /root/下载/QODBC/
unzip libqsqlodbc.zip -d /root/下载/QODBC/
把libqslodbc.so 复制到 qt 目录下的 sqldrivers 目录下
bash 复制代码
1.ODBC安装
1.1下载文件 并解压
tar -zxvf unixODBC-2.3.12.tar.gz -C /home/ODBC

1.2.编译安装
cd unixODBC-2.3.12
 ./configure --prefix=/usr/local/unixODBC --sysconfdir=/etc  # 配置unixODBC的安装路径为/usr/local/unixODBC
 make 
 make install

1.3 验证ODBC是否安装成功?
odbc_config --version
odbcinst -j


2.让环境认识ODBC 配置环境变量 
vim ~/.bashrc 
export ODBCDM_HOME=/usr/local/unixODBC
export PATH=$ODBCDM_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ODBCDM_HOME/lib:$LD_LIBRARY_PATH
source ~/.bashrc 



3.ODBC配置DM数据库驱动。
 3.1 /etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description     = ODBC DRIVER FOR DM8
Driver          =  /home/dmdba/dmdbms/bin/libdodbc.so


3.2 /etc/odbc.ini
[dm8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = 192.168.9.91
UID = SYSDBA
PWD = Int@4001093999
TCP_PORT = 5236

3.3 验证:用安装数据库的用户名 
su - dmdba
isql  dm8

2.2QT代码

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

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

   qDebug()<<QSqlDatabase::drivers();

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
   db.setHostName("192.168.9.91");
        db.setPort(5236);
        db.setDatabaseName("dm8");
        db.setUserName("SYSDBA");
        db.setPassword("Int@4001093999");
    if (db.open())
        qDebug() << "connect ok!";
    else
    {
        qDebug() << "connect fail! " << db.lastError().text().toLatin1();
    }

    return a.exec();
}
相关推荐
xfhuangfu3 小时前
Oracle中建立到CDB和PDB的连接
数据库·oracle·rpc
小小龙学IT3 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
NineData3 小时前
DTCC 2026 预告|NineData CEO& 创始人叶正盛:面向 AI Agent 的数据库 DevOps 与数据复制实践
数据库·人工智能·数据库开发·devops·ninedata·数据库技术·dtcc
刘某的Cloud3 小时前
ceph osd 导入导出 rbd volume 卷
linux·运维·ceph·volume
J_bean4 小时前
MySQL 事务是否必须手动开启?
数据库·mysql·数据库事务·自动提交·手动提交
J_bean4 小时前
MySQL InnoDB 如何检测死锁、判定死锁、处理死锁
数据库·mysql·死锁·死锁检测·处理死锁·死锁判定
浪子明X4 小时前
从 MongoDB 文档到关系模型:构建可重跑、可对账的数据迁移流水线
数据库·mongodb·oracle
杜子不疼.4 小时前
国产数据库撑起固井软件自主化:金仓 × 中海油服「海恒 Cemsol」落地解析
数据库
隔窗听雨眠5 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle
刀客Doc5 小时前
即时零售不只是多一个渠道,品牌开始重做终端生意
大数据·数据库