C语言ODBC方式连接DM数据库

一、安装 UNIX ODBC

  1. 下载 unixODBC 和 unixODBC-devel 。
  2. 安装 unixODBC 和 unixODBC-devel。

[root@RS1821 wt]# rpm -ivh unixODBC-devel-2.3.1-14.el7.x86_64.rpm unixODBC-2.3.1-14.el7.x86_64.rpm
warning: unixODBC-devel-2.3.1-14.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...1:unixODBC-2.3.1-14.el7            ################################# [ 50%]2:unixODBC-devel-2.3.1-14.el7      ################################# [100%]
[root@RS1821 wt]#
  1. 查看安装结果
[root@RS1821 odbc]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

二、配置 DM 数据源

1. 配置 /etc/odbcinst.ini

## 配置 /etc/odbcinst.ini 文件,在 odbcinst.ini 文件中添加以下信息:
[root@RS1821 odbc]# vim odbcinst.ini
[DM8 ODBC DRIVER]
Description = DM ODBC DRIVER FOR DM8
Driver      = /opt/dm8/bin

注意

/opt/dm8/bin 对应 $DM_HOME/bin 。

2. 配置 /etc/odbc.ini 文件

配置 /etc/odbc.ini 文件,在 odbc.ini 文件中添加以下信息:
[DM]
DRIVER = DM8 ODBC DRIVER
SERVER = 192.168.104.21
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236

三、gcc 环境检查

gcc --version执行结果如下:
[root@localhost odbctest]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

四、编写makefile

新建 makefile 脚本如下

文件中 odbc_conn.c 是 C的代码注意替换自己的

有的时候linux系统不同 分隔符会有差别导致编译不过去

CC=gccincludepath=$(DM_HOME)/include
libpath=$(DM_HOME)/bin
vpath=./CFLAGS=-I$(includepath) -DDM64 -Wall
LINKFLAGS=-L$(libpath) -ldodbc -Wall -Wl,-rpath $(libpath)%.o:%.c$(CC) -g -c $(CFLAGS) $< -o $@object_file1=odbc_conn.c
object_files=odbc_conn.cfinal_objects=odbc_connall : $(final_objects).PHONY : all clean rebuildodbc_conn : $(object_file1)$(CC) -o $@ $(object_file1) -g $(LINKFLAGS)@echo make ok.
clean :@rm -rf $(object_files)@rm -rf $(final_objects)rebuild : clean all

五、编写c代码

新建文件名odbc_conn.c文件,内容如下

#include <stdio.h>
#include <stdlib.h>
#include <sql.h>
#include <sqltypes.h>
#include <sqlext.h>/* 检测返回代码是否为成功标志,当为成功标志返回 TRUE,否则返回 FALSE */
#define RC_SUCCESSFUL(rc) ((rc) == SQL_SUCCESS || (rc) == SQL_SUCCESS_WITH_INFO)
/* 检测返回代码是否为失败标志,当为失败标志返回 TRUE,否则返回 FALSE */
#define RC_NOTSUCCESSFUL(rc) (!(RC_SUCCESSFUL(rc)))HENV henv;/* 环境句柄 */
HDBC hdbc;/* 连接句柄 */
HSTMT hsmt;/* 语句句柄 */
SQLRETURN sret; /* 返回代码 */int main(void)
{/* 申请一个环境句柄 */SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);/* 设置环境句柄的 ODBC 版本 */SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);/* 申请一个连接句柄 */SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);sret = SQLConnect(hdbc, (SQLCHAR *)"DM", SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS);if (RC_NOTSUCCESSFUL(sret)) {/* 连接数据源失败! */printf("odbc: fail to connect to server!\n");SQLFreeHandle(SQL_HANDLE_DBC, hdbc);SQLFreeHandle(SQL_HANDLE_ENV, henv);exit(0);}printf("odbc: connect to server success!\n");/* 断开与数据源之间的连接 */SQLDisconnect(hdbc);/* 释放连接句柄 */SQLFreeHandle(SQL_HANDLE_DBC, hdbc);/* 释放环境句柄 */SQLFreeHandle(SQL_HANDLE_ENV, henv);return 0;
}

六、编译并执行

## 1. 执行make 编译脚本会自动编译c代码
[dmdba@RS1821 odbctest]# make
## 2. 执行
[dmdba@RS1821 odbctest]# ./odbc_conn
odbc: connect to server success!

注意事项

建议使用dmdba用户执行,并且环境变量需要配置path的环境变量如下,否则执行make失败

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/data/dmdbms/bin"
export DM_HOME="/data/dmdbms"
export PATH=$PATH:/data/dmdbms/bin

参考

https://eco.dameng.com/docs/zh-cn/app-dev/c_c++_odbc.html

Q&A

1. Faild dependencied: libltdl.so7()

## 如果下载不下 就直接用下面的包
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm
rpm -ivh libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm

资料

链接:https://pan.baidu.com/s/1UhSwIbKqO6jh0iy6PEWqHg

提取码:l5zv

–来自百度网盘超级会员V3的分享

C语言ODBC方式连接DM数据库相关推荐

  1. C语言DCI(OCI)方式连接DM数据库

    C语言DCI(OCI)方式连接DM数据库 一.背景 近期用户使用DCI的方式连接达梦数据库出现中文乱码的问题,所以决定写一个测试Demo. 因为使用DCI的方式连接,适配中心https://eco.d ...

  2. S+MySQL——3.使用ODBC方式连接MySQL数据库

    文章目录 引言 1. 建立一个MFC对话框项目 2. 控件布局 2.1 添加控件 2.2 引入List Control控件类 2.3 定义控件变量 2.4 添加按钮点击响应函数 2.4 初始化List ...

  3. mysql odbc连接 mdb_java中采用ODBC方式连接Access数据库

    1.新建数据库: 在Access中新建数据库reckon.accdb(我本地的Access是2007的,2003的拓展名为mdb),存放在D盘Access目录下. 2.安装Access驱动程序: 从& ...

  4. Linux下安装DM数据库及SrpingBoot+druid连接DM数据库

    本文安装使用 CentOS7 操作系统,为 x86_64 架构,安装步骤全部以命令行方式,安装过程为参考达梦官方文档后的总结.安装完成后使用SrpingBoot+druid连接DM数据库,使用Mave ...

  5. 使用OLE DB方式连接常用数据库的连接字符串的设置

    使用OLE DB方式连接常用数据库的连接字符串的设置 SQL Server 使用 OLE DB 所设置的连接字符串: 标准连接方式 Provider=sqloledb;Data Source=data ...

  6. 使用ident认证方式连接postgres数据库

    使用ident认证方式连接postgres数据库 postgres支持多种用户认证方式 什么是ident服务 postgres支持ident认证的原理 实验验证 环境准备 实验设计 数据库端相关配置 ...

  7. 配置ODBC驱动连接DM8数据库

    一.ODBC介绍 ODBC提供访问不同类型的数据库的途径.结构化查询语言 SQL 是一种用来访问数据库的语言.通过使用 ODBC,应用程序能够使用相同的源代码和各种各样的数据库交互.这使得开发者不需要 ...

  8. c 连接mysql怎么增删改_C++ API方式连接mysql数据库实现增删改查

    这里复制的 http://www.bitscn.com/pdb/mysql/201407/226252.html 一.环境配置 1,装好mysql,新建一个C++控制台工程(从最简单的弄起,这个会了, ...

  9. R语言 使用RODBC连接oracle数据库

    使用R语言有多种包可以连接oracle数据库,我今天在这里讲一下使用使用RODBC连接oracle数据库. 1. 如果你的本地是windows系统的话,你需要安装oracle客户端. 2. 然后需要在 ...

最新文章

  1. python编程语言能干什么-python编程语言的优势与劣势--python能干啥
  2. vue脚手架搭建配置试调地址和端口号_全栈的自我修养: 002使用@vue/cli进行vue环境搭建 (使用Vue,SpringBoot,Flask完成前后端分离)...
  3. 定时器注入spring
  4. iphone网络交互json实现
  5. 单片机蜂鸣器编程音乐_基于单片机的智能鱼缸温控系统设计
  6. “” '' ``区别 初学者自用
  7. linux下enum类型占几个字节,enum大小问题
  8. mysql有没有实现高可用_MySQL高可用架构:mysql+keepalived实现
  9. Xshell如何操作linux
  10. 模幂运算问题,使用朴素算法和重复-平方算法(快速幂+C#计算程序运行时间)
  11. python:for循环从list列表的第二个元素开始遍历
  12. 机器学习- 吴恩达Andrew Ng Coursera学习总结合集,编程作业技巧合集
  13. 数字ic验证工程师面试题|ic验证面试常问88道
  14. 【剖析 | SOFARPC 框架】系列之 SOFARPC 序列化比较
  15. 基于SSM java学校教务管理系统
  16. 【有利可图网】PS教程:简单制造火焰文字特效
  17. 女 大三,抱金砖~呵~
  18. autohotkey_如何编写一个AutoHotkey脚本
  19. c语言五子棋键盘操控,c语言写的鼠标操作的五子棋游戏,欢迎观赏!
  20. 痞子衡嵌入式:在i.MXRT1060-EVK上利用memtester程序给SDRAM做压力测试

热门文章

  1. 7-5 密码锁 (10 分)
  2. C语言程序练习-L1-018 大笨钟 (10分)
  3. maven工程导入项目打开404_Maven依赖配置和依赖范围
  4. 匿名内部类可以访问private_内部类一篇文章搞定
  5. 如何点击按钮弹出弹框显示几秒_layer消息框显示在鼠标旁边
  6. Lomsat gelral
  7. 《ASP.Net MVC5 框架揭密》学习笔记
  8. session and cookie
  9. shell脚本实例-判断主机存活 以及企业备份方案
  10. 知乎首页 粒子效果 动态背景