linux环境中QT程序连接达梦数据库DM7简介

linux环境中QT程序连接达梦数据库DM7简介


一、安装UnixODBC
1、下载UnixODBC安装包
下载地址:ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.0.tar.gz
下载安装包unixODBC-2.3.0.tar.gz放到/usr/local下。
2、安装
运行下述命令:
cd /usr/local
tar zxvf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0
./configure --prefix=/usr/local/unixODBC-2.3.0 --includedir=/usr/include --libdir=/usr/lib --bindir=/usr/bin --sysconfdir=/etc
make
make install
安装完成
3、测试
运行命令:
odbcinst -j
a.安装成功
终端会显示UnixODBC相关信息

在这里插入图片描述
unixODBC所需的头文件都被安装到了/usr/inlucde下,编译好的库文件安装到了/usr/lib下,与unixODBC相关的可执行文件安装到了/usr/bin下,配置文件放到了/etc下。安装完成

b.失败
终端显示:
odbcinst: error while loading shared libraries: libodbcinst.so.2: cannot open shared object file: No such file or directory
错误处理:
(1)如果库文件安装到了/lib或/usr/lib目录下,那么需在该目录下执行一下ldconfig命令

(2)其他情况请参阅:http://blog.csdn.net/dongweizu33/article/details/54616258

二、配置
1、修改配置文件
$ sudo vim /etc/odbc.ini
在这里插入图片描述
$ sudo vim /etc/odbcinst.ini
在这里插入图片描述
需要注意的是,配置unixodbc时要确认odbcinst.ini配置文件中Driver中的路径是否正确。此处的DRIVER应该对应DM7安装目录下bin目录下的libdodbc.so文件。
注:odbc.ini和odbcinst.ini中每行开头禁止留有空格,否则会有如下报错信息:
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect。
直接从OneNote中拷贝代码到Ubuntu也会导致上述问题

2、检查unixODBC配置是否正确
[root@xx etc]# isql -v DM7 SYSDBA SYSDBA
±--------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
±--------------------------------------+
SQL>

如出现如上界面,说明UnixODBC配置成功。

三、问题解决方案
1、.so文件找不到
在这里插入图片描述
解决方案一:
第一步:查找该 .so 文件的依赖性
在这里插入图片描述
第二步:定位未找到的(=> not found)依赖文件
在这里插入图片描述
在这里插入图片描述
第三步:将依赖文件拷贝到/usr/lib中
在这里插入图片描述
在这里插入图片描述
第四步:再次查验该 .so 文件的依赖性,发现依赖文件完整
在这里插入图片描述
第三步的操作导致如下问题:
在这里插入图片描述
上述方案无法解决根本问题!!!
解决方案二:
该问题本质上是DM7没有安装在系统目录中导致的,将DM7安装在/opt目录中可直接解决问题!
在Linux环境中,QT工程通过UnixODBC连接DM数据库,需要手动启动DM服务器
dmserver dm.ini

四、UnixODBC要配合freetds在QT中连接数据库
1、FreeTDS的编译安装。

下载:http://pan.baidu.com/s/1o60XNQi
>解压
>cd freetds-0.9.1
>./configure --prefix=/usr/local/freetds
>make
>sudo make install

2、安装好后还需要配置3个文件:

1)配置 /usr/local/freetds/etc/freetds.conf

sudo vi /usr/local/freetds/etc/freetds.conf

#A typical Microsoft server

[testdsn] # SQL Server数据源名称,可以任意取有意义的名称

host=192.168.10.22 # 数据库主机

port=1344 #数据库监听端口

2)配置 /usr/local/unixODBC/etc/odbcinst.ini
[FreeTDS]
Description = FreeTDS unixODBC Driver
Driver = /usr/lib/libtdsodbc.so.0
UsageCount = 1

[SQL Server]
Description = FreeTDS unixODBC Driver
Driver = /usr/local/ unixODBC/lib/libtdsodbc.so.0
UsageCount = 1

3 )配置 /usr/local/unixODBC/etc/odbc.ini

testdsn] # 数据源名称
Driver=FreeTDS# 指向odbcinst.ini的驱动配置
Description=MSSQL Server
Servername=testdsn # 数据源名称
Database=sqlscada #数据库名称

五、关键QT源码
QSqlDatabase connection = QSqlDatabase::addDatabase(“QODBC”, connectionName);
connection.setDatabaseName(QString(“DM7_%1”).arg(tcpPort));//数据库名对应[DM_5236]、[DM_5237]等
connection.open(uid, pwd);

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值