青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

Linux下基于C++的DB2CLI開發(fā)

Posted on 2008-10-16 14:57 Prayer 閱讀(495) 評論(0)  編輯 收藏 引用 所屬分類: C/C++DB2

    db2數(shù)據(jù)庫提供了一套自己的應(yīng)用程序編程接口(API)---db2 call level interface,簡稱為db2cli編程接口,目前支持C和C++。

    db2cli基于MicrosoftOpenDatabaseConnectivity(ODBC)規(guī)范實現(xiàn)。

   

    以C++為例進(jìn)行db2cli編程,對db2數(shù)據(jù)庫進(jìn)行操作。

    源代碼首先需要include入“sqlcli1.h”,這是最新版本的db2cli提供的頭文件,該頭文件中會自動引用db2cli的其他相關(guān)頭文件。

    引入了“sqlcli1.h”后,代碼中就可以使用db2cli進(jìn)行編程了,下文會詳細(xì)介紹使用db2cli編程操作db2數(shù)據(jù)庫的大致步驟,先講下源代碼的編譯。

    假設(shè)源代碼文件為db2test.cpp,編譯命令為   

g++ -L/home/db2inst1/sqllib/lib32 -I/home/db2inst1/sqllib/include/ -ldb2

    db2test.cpp

    -L是庫搜索路徑,編譯中需要用到的libdb2.so就在存放在該路徑下;-I是頭文件搜索路徑,sqlcli1.h和其他引用的頭文件都在該路徑下;-ldb2是指定編譯時用到的庫文件libdb2.so,格式為-l$庫文件名稱后半部分。

    這樣的話就會生成默認(rèn)的目標(biāo)文件a.out。

 

    代碼中使用db2cli操作db2數(shù)據(jù)庫的大致步驟如下,

    首先使用SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv)獲取一個數(shù)據(jù)庫的環(huán)境句柄。SQL_HANDLE_ENV是入?yún)ⅲ瑯?biāo)識需要獲取一個什么類型的數(shù)據(jù)庫句柄;SQL_NULL_HANDLE是入?yún)ⅲ切枰斎氲那疤峋浔?amp;henv是出參,獲取到的句柄地址會存放在&henv。

    可能需要使用SQLSetEnvAttr()來設(shè)置環(huán)境句柄的一些參數(shù)。

    然后再使用SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc)來分配一個數(shù)據(jù)庫的連接句柄。

    可能需要使用SQLSetConnectAttr()來設(shè)置連接句柄的一些參數(shù)。

    然后使用SQLConnect(hdbc,db,SQL_NTS,user,SQL_NTS,pwd,SQL_NTS)來連接名稱為db的數(shù)據(jù)庫。

    到這數(shù)據(jù)庫連接就初始化完成了,下面可以使用語句句柄執(zhí)行具體的db2命令了。

 

    以查詢語句

    select version from NE12.TBL_0_20080906

    為例,介紹使用db2cli執(zhí)行具體的db2命令的大致步驟。

    首先使用SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt)來獲取一個語句句柄hstmt。

    然后使用SQLPrepare(hstmt,$SQL,$SQL.length)來將SQL語句和語句句柄綁定,$SQL.length是SQL語句的長度。

    然后就可以執(zhí)行該SQL語句了,SQL語句的執(zhí)行分為幾種情況,有SQL中包含參數(shù)和不包含參數(shù)的,有查詢類SQL語句和非查詢類SQL語句,不一一介紹,詳細(xì)可以參考db2信息中心。SQL語句通過調(diào)用SQLExecute(hstmt)或SQLExecDirect(hstmt,$SQL,$SQL.length)執(zhí)行。兩個函數(shù)的主要區(qū)別在于SQLExecute()可以多次被調(diào)用以達(dá)到多次執(zhí)行綁定到該語句句柄上SQL語句的目的,而SQLExecDirecte()多用于只執(zhí)行一次的SQL語句。

    如果有返回結(jié)果的話可以在執(zhí)行SQL語句之前使用SQLBindCol(hstmt,

ColNum,DataType,&DataValue,BufferLen,&StrLen)來實現(xiàn)將db2返回結(jié)果的某列值綁定到制定的存儲位置。ColNum是需要綁定的列在返回結(jié)果中的列序號,DataType指明該列的數(shù)據(jù)類型,&DataValue是緩存該列的一行數(shù)據(jù)的臨時存儲空間,BufferLen是緩存空間的大小,&StrLen是存放返回結(jié)果大小的地址。

    上面之所以需要綁定一個臨時存儲空間,是因為取返回結(jié)果時需要按列一行一行的順序獲取,執(zhí)行完SQL語句后,緊接著執(zhí)行SQLFetch(),db2就會將返回結(jié)果的各列的一行數(shù)據(jù)按事先綁定的規(guī)則放置到指定的緩存空間去,從緩存空間中獲取完這一行數(shù)據(jù)后,緊接著再執(zhí)行SQLFetch()就可以獲取下一行數(shù)據(jù),依此類推,直至執(zhí)行SQLFetch()返回失敗,則表示結(jié)果已取完。

 

    完成了對數(shù)據(jù)庫的相關(guān)操作之后需要將之前申請的數(shù)據(jù)庫連接進(jìn)行釋放,釋放的大致步驟如下,

    使用SQLFreeHandle(SQL_HANDLE_STMT,hstmt)釋放語句句柄;

    使用SQLDisconnect(hdbc)斷開數(shù)據(jù)庫連接句柄和相應(yīng)數(shù)據(jù)庫的連接;

    使用SQLFreeHandle(SQL_HANDLE_DBC,hdbc)釋放連接句柄;

    使用SQLFreeHandle(SQLP_HANDLE_ENV,henv)釋放環(huán)境句柄。

    至此數(shù)據(jù)庫連接的清理工作完成。

http://blog.sina.com.cn/s/blog_405bdbdd0100a5ig.html
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩大陆在线| 久久亚洲国产精品一区二区 | 欧美在线电影| 中文在线资源观看视频网站免费不卡| 午夜精品999| 免费视频久久| 宅男噜噜噜66一区二区66| 久久久99免费视频| 欧美手机在线视频| 在线欧美日韩精品| 午夜精品久久久久久久99水蜜桃 | 亚洲专区一区二区三区| 亚洲黄色成人久久久| 久久精品综合一区| 韩国精品久久久999| 欧美伊人精品成人久久综合97| 日韩一本二本av| 欧美日产一区二区三区在线观看| 亚洲美女诱惑| 亚洲精品视频在线观看免费| 欧美另类专区| 亚洲网站在线观看| 亚洲中字在线| 国内精品久久久久伊人av| 另类国产ts人妖高潮视频| 久久亚洲综合色| 最新日韩在线| 亚洲美女视频网| 国产精品最新自拍| 母乳一区在线观看| 欧美成人性网| 亚洲视频大全| 欧美综合国产精品久久丁香| 亚洲成色www8888| 亚洲精品视频啊美女在线直播| 欧美色网在线| 久久久亚洲精品一区二区三区| 久久一区二区三区超碰国产精品| 亚洲国产一区二区三区青草影视| 亚洲日本电影| 国产精品视频专区| 免费欧美电影| 欧美日韩美女在线| 久久精品一区蜜桃臀影院| 久久免费少妇高潮久久精品99| 亚洲人成在线影院| 亚洲综合大片69999| 亚洲高清视频在线| 一本色道**综合亚洲精品蜜桃冫| 国产综合激情| 99爱精品视频| 亚洲高清av在线| 亚洲一区欧美激情| 久久成人av少妇免费| 亚洲日本电影在线| 亚洲综合好骚| 亚洲精品综合在线| 欧美亚洲自偷自偷| 一本色道久久综合亚洲精品高清 | 激情久久婷婷| 亚洲精品中文字幕在线| 国产在线精品一区二区中文| 亚洲精品免费在线播放| 国产亚洲视频在线| 亚洲精品一区二区三区99| 国产情人节一区| 亚洲精品看片| 亚洲第一二三四五区| 亚洲欧美日韩国产另类专区| 亚洲福利精品| 久久狠狠久久综合桃花| 亚洲综合日韩在线| 欧美激情亚洲综合一区| 久久深夜福利| 国产麻豆综合| 一区二区三区国产在线| 亚洲激情视频| 久久免费国产精品1| 久久精品视频在线播放| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 欧美日韩一区二区三区在线观看免| 欧美制服丝袜第一页| 欧美三级在线| 亚洲精品欧美极品| 亚洲激情婷婷| 久久九九99视频| 欧美专区在线播放| 国产精品成人播放| 夜夜嗨av色一区二区不卡| 日韩视频在线一区二区三区| 久久精品在线视频| 久久精品夜夜夜夜久久| 国产精品一二| 午夜精品国产精品大乳美女| 午夜精品视频在线观看| 国产精品免费福利| 午夜欧美精品| 久久久久久久999精品视频| 国产日韩欧美一区二区三区在线观看| 亚洲视频www| 午夜视频一区二区| 国产日韩专区| 久久精品九九| 欧美成人自拍视频| 亚洲精品无人区| 欧美激情小视频| 亚洲视频国产视频| 久久免费视频一区| 亚洲国内自拍| 欧美日韩播放| 亚洲免费在线视频| 久久婷婷成人综合色| 亚洲国内高清视频| 欧美日本三区| 亚洲一区二区在线视频| 久久久人成影片一区二区三区| 在线观看福利一区| 99这里只有精品| 香港久久久电影| 在线免费观看日本欧美| 欧美国产日韩一区二区在线观看| 日韩午夜在线| 久久精品国产2020观看福利| 在线观看91精品国产麻豆| 欧美国产亚洲视频| 亚洲综合精品自拍| 亚洲国产成人在线| 香蕉成人伊视频在线观看| 国产一区999| 欧美国产91| 欧美一级夜夜爽| 亚洲国产欧洲综合997久久| 亚洲男人的天堂在线aⅴ视频| 精品动漫3d一区二区三区| 欧美色另类天堂2015| 久久精品国产亚洲5555| 亚洲精品在线观看视频| 久久久久国产精品一区三寸| 亚洲精品在线二区| 国产一区二区三区久久精品| 欧美日韩18| 老司机精品导航| 亚洲欧美日本视频在线观看| 亚洲国产高清在线| 久久裸体视频| 欧美亚洲视频一区二区| 亚洲激情在线观看| 国产自产在线视频一区| 国产精品久久久久毛片软件 | 9l国产精品久久久久麻豆| 国产亚洲免费的视频看| 欧美日韩另类字幕中文| 久久亚洲私人国产精品va| 亚洲免费综合| 99亚洲一区二区| 欧美国产视频一区二区| 久久精品五月| 性亚洲最疯狂xxxx高清| 中文日韩电影网站| 亚洲精品久久久蜜桃| 伊人久久av导航| 国产主播一区二区三区| 国产麻豆日韩欧美久久| 欧美午夜欧美| 欧美人与性动交cc0o| 欧美不卡在线| 老司机精品视频网站| 久久久夜精品| 久久久精品国产一区二区三区| 亚洲综合日韩| 亚洲字幕一区二区| 亚洲一二三级电影| 一区二区免费看| 洋洋av久久久久久久一区| 亚洲精品之草原avav久久| 亚洲国产专区校园欧美| 亚洲国产精品美女| 亚洲欧洲精品一区二区| 亚洲国产裸拍裸体视频在线观看乱了中文| 久久久久九九视频| 另类激情亚洲| 亚洲电影免费观看高清完整版在线 | 精品动漫一区| 激情久久影院| 在线观看三级视频欧美| 亚洲成色999久久网站| 亚洲第一精品电影| 亚洲美女免费视频| 一区二区三区高清| 午夜国产精品视频| 新狼窝色av性久久久久久| 狠狠综合久久av一区二区老牛| 国产亚洲成人一区| 一区二区三区在线高清| 最新国产の精品合集bt伙计| 夜夜狂射影院欧美极品| 亚洲专区国产精品| 久久夜色精品国产欧美乱| 欧美成人国产va精品日本一级| 91久久香蕉国产日韩欧美9色 |