300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > linux qt 达梦 linux环境中QT程序连接达梦数据库DM7简介

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

时间:2020-11-04 01:01:19

相关推荐

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

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

一、安装UnixODBC

1、下载UnixODBC安装包

下载地址:ftp:///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)其他情况请参阅:/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的编译安装。

下载:/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);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。