1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C语言ODBC方式连接DM数据库

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

时间:2021-08-28 10:35:41

相关推荐

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

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

一、安装 UNIX ODBC

下载 unixODBC 和 unixODBC-devel 。安装 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.rpmwarning: unixODBC-devel-2.3.1-14.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEYPreparing...################################# [100%]Updating / installing...1:unixODBC-2.3.1-14.el7 ################################# [ 50%]2:unixODBC-devel-2.3.1-14.el7################################# [100%][root@RS1821 wt]#

查看安装结果

[root@RS1821 odbc]# odbcinst -junixODBC 2.3.1DRIVERS............: /etc/odbcinst.iniSYSTEM DATA SOURCES: /etc/odbc.iniFILE DATA SOURCES..: /etc/ODBCDataSourcesUSER DATA SOURCES..: /root/.odbc.iniSQLULEN Size.......: 8SQLLEN Size........: 8SQLSETPOSIROW 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 DM8Driver= /opt/dm8/bin

注意

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

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

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

三、gcc 环境检查

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

四、编写makefile

新建 makefile 脚本如下

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

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

CC=gccincludepath=$(DM_HOME)/includelibpath=$(DM_HOME)/binvpath=./CFLAGS=-I$(includepath) -DDM64 -WallLINKFLAGS=-L$(libpath) -ldodbc -Wall -Wl,-rpath $(libpath)%.o:%.c$(CC) -g -c $(CFLAGS) $< -o $@object_file1=odbc_conn.cobject_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_connodbc: 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

参考

/docs/zh-cn/app-dev/c_c++_odbc.html

Q&A

1. Faild dependencied: libltdl.so7()

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

资料

链接:/s/1UhSwIbKqO6jh0iy6PEWqHg

提取码:l5zv

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

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