linux下QT+ODBC访问达梦数据库

一、环境说明

操作系统:中标麒麟桌面版,以下使用linux代替。
场景:在linux上安装达梦客户端,使用QTcreater+ODBC访问其它服务器上的达梦数据库。

二、驱动安装

2.1 安装达梦客户端

  1. 将下载的达梦安装包上传到linux;
  2. 解压安装包;
  3. 进入安装包,找到DMInstall.bin,修改权限chmod 755 ./DMInstall.bin
  4. 执行DMInstall.bin安装客户端;
  5. 在模式选择阶段,选择“客户端”,其它根据需要设置,直接下一步即可;
  6. 完成安装。

2.2 安装unixODBC

有的系统中可能已经安装过unixODBC,可在终端中输入:odbcinst -j查看安装信息,如果出现以下内容,则说明已经安装过:
unixODBC 2.3.1
DRIVERS…: /usr/local/etc/odbcinst.ini(路径可能不同,如/etc/odbcinst.ini)
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES…: /usr/local/etc/ODBCDataSources
USER DATA SOURCES…: /root/.odbc.ini
SQLULEN Size…: 8
SQLLEN Size…: 8
SQLSETPOSIROW Size.: 8

如果没有安装过,则需要下载unixODBC-2.3.1.tar.gz 编译安装,安装方法如下:
tar -zxvf unixODBC-2.3.1.tar.gz
cd unixODBC-2.3.1
./configure
make
make install

2.3 unixODBC配置

需要配置odbcinst.ini和odbc.ini两个文件,这两个文件的位置参见2.2中的显示信息。
1 配置odbcinst.ini
在odbcinst.ini文件中添加如下内容
[DM7]
Description = dm odbc
Driver = /opt/dmdbms/bin/libdodbc.so(该路径根据客户端安装路径调整,默认是该路径)
2 配置 odbc.ini
添加如下内容:
[dm]
Description = dm7 dsn
Driver = DM7
SERVER =192.168.3.222 —数据库服务端IP地址
UID = username —数据库实例用户名
PWD = password —数据库实例密码
TCP_PORT = 5236 —数据库端口号,默认5236

3 测试
配置完成后,在终端中输入:isql dm 测试是否可以正常连接
[root@localhost opt]# isql dm
±--------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
±--------------------------------------+
SQL> select 1;

±-----------+

| 1 |
±-----------+
| 1 |
±-----------+
SQLRowCount returns 1
1 rows fetched
SQL>

2.4 QT中使用QODBC访问达梦

  1. 在pro文件件中添加sql模块,增加如下内容:
    QT += sql

  2. 在需要使用odbc的地方增加头文件
    #include < QSqlDatabase>
    #include < QSqlQuery>

  3. 例子
    QSqlDatabase db = QSqlDatabase::addDatabase(“QODBC”);
    db.setDatabaseName(“DM”); //注意是DM,不是DM7
    db.setPort(5236);
    db.setHostName(“192.168.3.222”); //数据库服务端IP
    db.setUserName(“username”); //数据库用户名
    db.setPassword(“password”); //数据库密码
    //连接数据库
    if(db.open())
    {
    qDebug() << “数据库连接成功”;
    QString sql = "select * from “mod”.“test” "; //mod是模式名,test是表名
    QSqlQuery query(sql);
    while(query.next())
    {
    //逐列获取数据
    QString col1 = query.value(0).toString();
    QString col2 = query.value(1).toString();
    int col3 = query.value(2).toInt();
    }

    db.close(); //关闭连接
    }else
    {
    qDebug() << “数据库连接失败”;
    }

以上,欢迎交流学习。

  • 9
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qfl_sdu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值