qtsql连接达梦数据库

odbc

window和linux都有odbc的中间件,可以通过odbc中间件配合qtsql连接数据库

  • windows下配置odbc
  • linux配置odbc

apt install unixodbc unixodbc-dev

/etc/odbcinst.ini配置

ini 复制代码
[DM8 ODBC DRIVER]
Description=DM8 ODBC Driver
DRIVER=/opt/dmdbms/bin/libdodbc.so

/etc/odbc.ini配置

ini 复制代码
[dm8]
Description=DM8 Database
DRIVER=DM8 ODBC DRIVER
SERVER=localhost
TCP_PORT=5236
UID=SYSDBA
PWD=SYSDBA

isql -v dm8测试连接是否成功

qt

使用qt6 构建项目

c 复制代码
aux_source_directory(. code)
find_package(Qt6 COMPONENTS REQUIRED Core Sql Gui Widgets Network PATHS d:/tools/qt/6.6.0/msvc2019_64/lib/cmake)

add_executable(dameng ${code})
target_link_libraries(dameng Qt6::Core Qt6::Sql)

chatgpt提示的代码如下:

c 复制代码
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QSqlError>
#include <QDebug>

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

    // 添加数据库驱动
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    // 设置数据库文件路径
    db.setDatabaseName("dm");

    // 打开数据库
    if (!db.open()) {
        qDebug() << "Failed to open database:"<<db.lastError().text();
        return -1;
    }

    // 创建查询对象
    QSqlQuery query;
    // 执行查询语句
    if (!query.exec("SELECT * FROM \"SYS\".sysuser$")) {
        qDebug() << "Query failed: " << query.lastError().text();
        return -1;
    }

    QSqlRecord record = query.record();
    // 遍历查询结果
    while (query.next()) {
        for (int i = 0; i < record.count(); ++i) {
            qDebug() << record.fieldName(i) <<":"<< query.value(i).toString();
        }
        qDebug()<<"--------------------";
    }

    // 关闭数据库
    db.close();

    return a.exec();
}

exception

  • no driver load

qtsql的driver在plugin的sqldriver目录里面,通过动态加载目录里面的文件加载driver

  • 加密模块加载失败, HY000 QODBC: Unable to connect

达梦数据库bin文件中,拷贝ssleay32、libeay32两个文件

  • isql 提示[ISQL]ERROR: Could not SQLConnect

检查/etc/odbc.ini中的配置是否正确,driver和odbcinst.ini的名称一致

  • 提示libdodbc.so找不到

ldd libdodbc.so 是否有找不到的文件,需要配置环境变量LD_LIBRARY_PATH

相关推荐
数据库小组7 小时前
2026 年,MySQL 到 SelectDB 同步为何更关注实时、可观测与可校验?
数据库·mysql·数据库管理工具·数据同步·ninedata·selectdb·迁移工具
华科易迅7 小时前
MybatisPlus增删改查操作
android·java·数据库
Kethy__8 小时前
计算机中级-数据库系统工程师-计算机体系结构与存储系统
大数据·数据库·数据库系统工程师·计算机中级
SHoM SSER8 小时前
MySQL 数据库连接池爆满问题排查与解决
android·数据库·mysql
熬夜的咕噜猫8 小时前
MySQL备份与恢复
数据库·oracle
jnrjian8 小时前
recover database using backup controlfile until cancel 假recover,真一致
数据库·oracle
lifewange9 小时前
java连接Mysql数据库
java·数据库·mysql
大妮哟9 小时前
postgresql数据库日志量异常原因排查
数据库·postgresql·oracle
还是做不到嘛\.10 小时前
Dvwa靶场-SQL Injection (Blind)-基于sqlmap
数据库·sql·web安全
不写八个10 小时前
PHP教程004:php链接mysql数据库
数据库·mysql·php