• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            odbc(odbc數(shù)據(jù)源配置)

            更新時間:2023-03-01 14:33:52 閱讀: 評論:0

            這兩天安裝試用了達(dá)夢數(shù)據(jù)庫(DM8),下面記錄對達(dá)夢數(shù)據(jù)庫ODBC接口編程的探索過程。

            Linux環(huán)境中,達(dá)夢數(shù)據(jù)庫的ODBC接口依賴unixODBC庫。

            1.安裝unixODBC庫

            下載:wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.9.tar.gz 解壓:tar -zxvf unixODBC-2.3.9.tar.gz 進(jìn)入解壓目錄安裝:cd unixODBC-2.3.9/ ./configure --prefix=/home/dmdba/unixODBC --enable-gui=no 注:先建自定義安裝目錄unixODBCmake && make install

            按上面安裝后,unixODBC的lib、include和etc配置生成在$HOME/unixODBC下,如下圖:

            unixODBC安裝后

            但這時etc下的odbc.ini和odbcinst.ini尚且為空,需要配置。

            配置后的odbc.int和odbcinst.ini文件

            配置注意:odbcinst.int的節(jié)點(diǎn)名稱(紅框2)是odbc.int的Driver值。

            安裝完成后,把unixODBC的lib庫目錄加到LD_LIBRARY_PATH環(huán)境變量中。

            現(xiàn)在LD_LIBRARY_PATH值如下:

            [dmdba@wen ~]$ echo $LD_LIBRARY_PATH/home/dmdba/dmdbms/bin:/home/dmdba/unixODBC/lib:/home/dmdba/iconv/lib

            測試odbc接口是否可用:

            測試odbc接口可用

            2.ODBC編程接口

            達(dá)夢ODBC接口用會用到轉(zhuǎn)碼庫libiconv.so.2,若沒有先安裝之,自定義安裝目錄時要把安裝位置加入LD_LIBRARY_PATH路徑中。

            至此環(huán)境準(zhǔn)備完畢,可以進(jìn)行測試代碼編譯了。

            下面是改造后的代碼示例:

            [dmdba@wen ~]$ cat test_odbc.c

            #include <stdio.h>#include <string.h>#include <stdlib.h>#include <sql.h>#include <sqltypes.h>#include <sqlext.h>/* * SQLEndTran:提交或者回滾事務(wù)。 * 調(diào)用 SQLFreeHandle 釋放語句句柄,關(guān)閉所有打開的游標(biāo),釋放相關(guān)的語句句柄( 在非自動提交模式下,需事先提交當(dāng)前的事務(wù)) * * *//* 檢測返回代碼是否為成功標(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; /* 返回代碼 */void main(void){printf("begin "); char szpersonid[11]; /*人員編號*/ SQLLEN cbpersonid=0; char szname[51]; /*人員姓名*/ SQLLEN cbname=0; SQLRETURN retcode=SQL_ERROR ; /* 返回代碼 -1 */ /* 申請一個環(huán)境句柄 */ retcode= SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv); if (SQL_SUCCESS == retcode || SQL_SUCCESS_WITH_INFO == retcode ){ printf("SQLAllocHandle ok "); } el{ printf("retcode=%d ",retcode); exit(-1); } /* 設(shè)置環(huán)境句柄的 ODBC 版本 */ SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER); /* 申請一個連接句柄 */ SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);///home/dmdba/unixODBC/etc/odbc.int的[dm8]節(jié)點(diǎn)名 retcode = SQLConnect(hdbc, (SQLCHAR *)"dm8", SQL_NTS, (SQLCHAR *)"dmdbur1", SQL_NTS, (SQLCHAR *)"dmdbur1", SQL_NTS); if (SQL_SUCCESS == retcode || SQL_SUCCESS_WITH_INFO == retcode ){ printf("SQLConnect ok "); } el{ SQLFreeHandle(SQL_HANDLE_ENV, henv); printf("retcode=%d ",retcode); exit(-1); } SQLINTEGER AUTOCOMMIT_MODE;/* 設(shè)置連接句柄屬性,關(guān)閉自動提交功能 */ SQLSetConnectAttr(hdbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_OFF, SQL_IS_INTEGER);//SQLSetConnectAttr(hdbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, SQL_IS_INTEGER); AUTOCIMMIT_ON is default /* 申請一個語句句柄 */ SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hsmt); SQLExecDirect(hsmt, (SQLCHAR *)"inrt into city values('5','cp');", SQL_NTS); SQLExecDirect(hsmt, (SQLCHAR *)"inrt into city values('6','北京');", SQL_NTS); SQLExecDirect(hsmt, (SQLCHAR *)"inrt into city values('6','china');", SQL_NTS); /* 立即執(zhí)行查詢?nèi)藛T信息表的語句 */ SQLExecDirect(hsmt, (SQLCHAR *)"SELECT f1, f2 FROM city;", SQL_NTS); /* 綁定數(shù)據(jù)緩沖區(qū) */ SQLBindCol(hsmt, 1, SQL_C_CHAR, szpersonid, sizeof(szpersonid), &cbpersonid); SQLBindCol(hsmt, 2, SQL_C_CHAR, szname, sizeof(szname), &cbname); /* 取得數(shù)據(jù)并且打印數(shù)據(jù) */ for (;;) { sret = SQLFetchScroll(hsmt, SQL_FETCH_NEXT, 0); if (sret == SQL_NO_DATA_FOUND){ break; } /*SQLRETURN SQL_API SQLGetData(SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLPOINTER TargetValue, SQLLEN BufferLength, SQLLEN *StrLen_or_Ind);*/ printf("%s %s. len=%d ", szpersonid, szname,cbname); bzero(szpersonid,sizeof szpersonid); bzero(szname,sizeof szname); } /* 關(guān)閉游標(biāo),終止語句執(zhí)行 */ SQLCloCursor(hsmt); SQLExecDirect(hsmt, (SQLCHAR *)"delete from city where f1='3';", SQL_NTS); SQLExecDirect(hsmt, (SQLCHAR *)"delete from city where f1='5';", SQL_NTS); SQLExecDirect(hsmt, (SQLCHAR *)"update city t f2='LN' where f1='2';", SQL_NTS); //提交連接上的事務(wù) SQLEndTran(SQL_HANDLE_DBC, hdbc, SQL_COMMIT); //回滾連接上的事務(wù) //SQLEndTran(SQL_HANDLE_DBC, hdbc, SQL_ROLLBACK); /* 釋放語句句柄 */ SQLFreeHandle(SQL_HANDLE_STMT, hsmt); /* 斷開與數(shù)據(jù)源之間的連接 */ SQLDisconnect(hdbc); /* 釋放連接句柄 */ SQLFreeHandle(SQL_HANDLE_DBC, hdbc); /* 釋放環(huán)境句柄*/ SQLFreeHandle(SQL_HANDLE_ENV, henv);printf("end ok "); return 0;}

            這是編譯test_odbc.c的Makefile文件:

            DM_DIR=/home/dmdbaall:test_odbctest_odbc:test_odbc.o gcc -ggdb -Wall -o $@ $^ -L$(DM_DIR)/unixODBC/lib -L$(DM_DIR)/dmdbms/bin -I$(DM_DIR)/unixODBC/include -lodbcclean: rm test_odbc rm test_odbc.o

            編譯后生成test_odbc程序,可以正確讀取和修改測試庫(dmdbur1)中的表數(shù)據(jù)。

            ODBC接口調(diào)用存儲過程、函數(shù)方法見《DM8程序員手冊.pdf》,相關(guān)資料在數(shù)據(jù)庫安裝目錄的doc里可找到。

            tips:

            客戶端工具可用DBeaver,它依賴的驅(qū)動DmJdbcDriver17.jar可在達(dá)夢安裝包的drivers目錄里獲取。驅(qū)動設(shè)置時:

            類名:dm.jdbc.driver.DmDriver

            JDBC URL: jdbc:dm://<ip>:<port>/<DBNAME>

            鐵銹筆記 2022-01-13

            本文發(fā)布于:2023-02-28 20:03:00,感謝您對本站的認(rèn)可!

            本文鏈接:http://www.newhan.cn/zhishi/a/167765243277661.html

            版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除。

            本文word下載地址:odbc(odbc數(shù)據(jù)源配置).doc

            本文 PDF 下載地址:odbc(odbc數(shù)據(jù)源配置).pdf

            標(biāo)簽:數(shù)據(jù)源   odbc
            相關(guān)文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實(shí)用文體寫作網(wǎng)旗下知識大全大全欄目是一個全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 日本韩国一区二区精品| 国产一区二区日韩在线| 国产精品偷伦费观看一次 | av深夜免费在线观看| 亚洲AV无码乱码1区久久| 国产日韩av二区三区| 奇米影视7777久久精品| 久久精品国产99精品亚洲| 亚洲第一区二区快射影院| 18禁黄无遮挡网站免费| 又爽又大又黄a级毛片在线视频| 国产超碰无码最新上传| 国产亚洲精品AA片在线爽| 久久露脸国产精品WWW| 亚洲精品视频免费| 人妻少妇精品系列一区二区| 18禁一区二区每日更新| 亚洲 校园 欧美 国产 另类 | 午夜A理论片在线播放| 国产成人高清精品亚洲| 黄色段片一区二区三区| 日本一区二区三区在线 |观看| 国产老熟女狂叫对白| 久久99精品一久久久久久| 国产亚洲精品岁国产精品| 白嫩少妇无套内谢视频| 亚洲国产午夜精品理论片| 欧美一区二区三区香蕉视| 中文毛片无遮挡高潮免费| 午夜福利国产精品视频| 欧美性猛交xxxx乱大交丰满| 风流老熟女一区二区三区| 成av免费大片黄在线观看| 久久99国产精品尤物| 欧美视频专区一二在线观看| www欧美在线观看| 午夜人成免费视频| 国产久免费热视频在线观看| a级亚洲片精品久久久久久久| 午夜福利精品国产二区| 中文字幕人妻第一区|