C语言ODBC方式连接DM数据库
生活随笔
收集整理的這篇文章主要介紹了
C语言ODBC方式连接DM数据库
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
C語言O(shè)DBC方式連接DM數(shù)據(jù)庫
一、安裝 UNIX ODBC
二、配置 DM 數(shù)據(jù)源
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 對應(yīng) $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 環(huán)境檢查
gcc --version執(zhí)行結(jié)果如下: [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的代碼注意替換自己的
有的時(shí)候linux系統(tǒng)不同 分隔符會(huì)有差別導(dǎo)致編譯不過去
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文件,內(nèi)容如下
#include <stdio.h> #include <stdlib.h> #include <sql.h> #include <sqltypes.h> #include <sqlext.h>/* 檢測返回代碼是否為成功標(biāo)志,當(dāng)為成功標(biāo)志返回 TRUE,否則返回 FALSE */ #define RC_SUCCESSFUL(rc) ((rc) == SQL_SUCCESS || (rc) == SQL_SUCCESS_WITH_INFO) /* 檢測返回代碼是否為失敗標(biāo)志,當(dāng)為失敗標(biāo)志返回 TRUE,否則返回 FALSE */ #define RC_NOTSUCCESSFUL(rc) (!(RC_SUCCESSFUL(rc)))HENV henv;/* 環(huán)境句柄 */ HDBC hdbc;/* 連接句柄 */ HSTMT hsmt;/* 語句句柄 */ SQLRETURN sret; /* 返回代碼 */int main(void) {/* 申請一個(gè)環(huán)境句柄 */SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);/* 設(shè)置環(huán)境句柄的 ODBC 版本 */SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);/* 申請一個(gè)連接句柄 */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)) {/* 連接數(shù)據(jù)源失敗! */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");/* 斷開與數(shù)據(jù)源之間的連接 */SQLDisconnect(hdbc);/* 釋放連接句柄 */SQLFreeHandle(SQL_HANDLE_DBC, hdbc);/* 釋放環(huán)境句柄 */SQLFreeHandle(SQL_HANDLE_ENV, henv);return 0; }六、編譯并執(zhí)行
## 1. 執(zhí)行make 編譯腳本會(huì)自動(dòng)編譯c代碼 [dmdba@RS1821 odbctest]# make ## 2. 執(zhí)行 [dmdba@RS1821 odbctest]# ./odbc_conn odbc: connect to server success!注意事項(xiàng)
建議使用dmdba用戶執(zhí)行,并且環(huán)境變量需要配置path的環(huán)境變量如下,否則執(zhí)行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
–來自百度網(wǎng)盤超級(jí)會(huì)員V3的分享
總結(jié)
以上是生活随笔為你收集整理的C语言ODBC方式连接DM数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jmeter达梦数据库
- 下一篇: C语言DCI(OCI)方式连接DM数据库