一、环境说明
操作系统:中标麒麟桌面版,以下使用linux代替。
场景:在linux上安装达梦客户端,使用QTcreater+ODBC访问其它服务器上的达梦数据库。
二、驱动安装
2.1 安装达梦客户端
- 将下载的达梦安装包上传到linux;
- 解压安装包;
- 进入安装包,找到DMInstall.bin,修改权限chmod 755 ./DMInstall.bin
- 执行DMInstall.bin安装客户端;
- 在模式选择阶段,选择“客户端”,其它根据需要设置,直接下一步即可;
- 完成安装。
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访问达梦
-
在pro文件件中添加sql模块,增加如下内容:
QT += sql -
在需要使用odbc的地方增加头文件
#include < QSqlDatabase>
#include < QSqlQuery> -
例子
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() << “数据库连接失败”;
}
以上,欢迎交流学习。