日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時(shí)間:2024/4/19 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言ODBC方式连接DM数据库 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C語言O(shè)DBC方式連接DM數(shù)據(jù)庫

一、安裝 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.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]#
  • 查看安裝結(jié)果
  • [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 數(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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。