<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      OCI編程高級篇(十九) 創(chuàng)建和使用OCI連接池

      訪問www.tomcoding.com網(wǎng)站,學(xué)習(xí)Oracle內(nèi)部數(shù)據(jù)結(jié)構(gòu),詳細文檔說明,下載Oracle的exp/imp,DUL,logminer,ASM工具的源代碼,學(xué)習(xí)高技術(shù)含量的內(nèi)容。

      上一節(jié)介紹了連接池的概念和使用連接池的步驟,這一節(jié)看看具體的操作是怎樣的,先看一下用到的函數(shù)原型和參數(shù)。

      創(chuàng)建連接池函數(shù)OCIConnectionPoolCreate(),原型和參數(shù)如下。

      sword OCIConnectionPoolCreate ( OCIEnv *envhp,
          OCIError          *errhp,
          OCICPool        *poolhp,
          OraText            **poolName,
          sb4                   *poolNameLen,
          const OraText  *dblink,
          sb4                   dblinkLen,
          ub4                   connMin,
          ub4                   connMax,
          ub4                   connIncr,
          const OraText  *poolUsername,
          sb4                   poolUserLen,
          const OraText  *poolPassword,
          sb4                   poolPassLen,
          ub4                   mode );

      envhp是一個輸入?yún)?shù),OCI環(huán)境句柄。

      errhp是一個輸入/輸出參數(shù),錯誤句柄,返回錯誤碼和錯誤信息文本。

      poolhp是一個輸入?yún)?shù),連接池句柄,調(diào)用函數(shù)前要先分配一個,父句柄是envhp

      poolName是一個輸出參數(shù),返回連接池的名稱,后面的函數(shù)會用到。

      poolNameLen是一個輸出參數(shù),返回連接池名稱的長度,后面的函數(shù)會用到。

      dblink是一個輸入?yún)?shù),連接數(shù)據(jù)庫的連接字符串,可以是TNS名稱。

      dblinkLen是一個輸入?yún)?shù),連接字符串的長度。

      connMin是一個輸入?yún)?shù),與后面的兩個參數(shù)一起決定連接池到數(shù)據(jù)庫的連接個數(shù),這個是連接池創(chuàng)建時與數(shù)據(jù)庫建立的最小連接數(shù),最小可以是0,有用戶請求時再創(chuàng)建。

      connMax是一個輸入?yún)?shù),限制連接池與數(shù)據(jù)庫的最大連接數(shù)。

      connIncr是一個輸入?yún)?shù),表示連接達到最小值,有新連接請求時每次增長的連接個數(shù)。

      poolUsername是一個輸入?yún)?shù),連接池會隱含的開啟一個與數(shù)據(jù)庫的會話,這是會話認證時的用戶名稱。

      poolUserLen是一個輸入?yún)?shù),認證用戶名稱的長度。

      poolPassword是一個輸入?yún)?shù),認證用戶的密碼。

      poolPassLen是一個輸入?yún)?shù),密碼長度。

      mode是一個輸入?yún)?shù),一般選擇OCI_DEFAULT

      獲取連接池的會話函數(shù),有兩個可用一個是OCILogon2(),另一個是OCISessionGet()。先看第一個。

      sword OCILogon2 ( OCIEnv *envhp,
          OCIError         *errhp,
          OCISvcCtx      **svchp,
          const OraText  *username,
          ub4                  uname_len,
          const OraText  *password,
          ub4                  passwd_len,
          const OraText  *dbname,
          ub4                  dbname_len );
          ub4                  mode );

      envhp是一個輸入?yún)?shù),OCI環(huán)境句柄。

      errhp是一個輸入/輸出參數(shù),錯誤句柄,返回錯誤碼和錯誤信息文本。

      svchp是一個輸入/輸出參數(shù),服務(wù)上下文句柄。這個句柄不需要分配,OCI會自動分配這個句柄,函數(shù)還會自動分配一個服務(wù)器句柄和開啟一個會話句柄,并且把這兩個句柄設(shè)置到服務(wù)上下文句柄的屬性中。

      username是一個輸入?yún)?shù),用于會話認證的用戶名。

      uname_len是一個輸入?yún)?shù),認證用戶的長度。

      password是一個輸入?yún)?shù),認證用戶的密碼。

      passwd_len是一個輸入?yún)?shù),認證密碼長度。

      dbname是一個輸入?yún)?shù),在這里要輸入連接池的名稱。

      dbname_len是一個輸入?yún)?shù),連接池名稱的長度。

      mode是一個輸入?yún)?shù),這里要選擇OCI_LOGON2_CPOOL

      另一個函數(shù)是OCISessionGet(),這個函數(shù)傳入一個認證信息句柄,可以更細致的控制認證過程。

      sword OCISessionGet ( OCIenv *envhp,
          OCIError          *errhp,
          OCISvcCtx      **svchp,
          OCIAuthInfo    *authInfop,
          OraText           *dbName,
          ub4                  dbName_len,
          const OraText *tagInfo,
          ub4                  tagInfo_len,
          OraText           **retTagInfo,
          ub4                  *retTagInfo_len,
          boolean           *found,
          ub4                  mode );

      envhp是一個輸入/輸出參數(shù),OCI環(huán)境句柄。

      errhp是一個輸入/輸出參數(shù),錯誤句柄,返回錯誤碼和錯誤信息文本。

      svchp是一個輸入?yún)?shù),服務(wù)上下文句柄。這個句柄不需要分配,OCI會自動分配這個句柄,函數(shù)還會自動分配一個服務(wù)器句柄和開啟一個會話句柄,并且把這兩個句柄設(shè)置到服務(wù)上下文句柄的屬性中。

      authInfop是一個輸入?yún)?shù),認證信息句柄,要預(yù)先分配,父句柄是envhp,使用OCI_HTYPE_AUTHINFO類型,分配句柄后要設(shè)置認證用戶和密碼的屬性。

      dbName是一個輸入?yún)?shù),連接池名稱,創(chuàng)建連接池時返回。

      dbName_len是一個輸入?yún)?shù),連接池名稱長度。

      tagInfo是一個輸入?yún)?shù),會話標簽信息,只用于會話池的參數(shù),設(shè)置為NULL

      tagInfo_len是一個輸入?yún)?shù),會話標簽信息長度。

      retTagInfo是一個輸出參數(shù),返回的會話標簽信息,指示會話的類型,只用于會話池的參數(shù),設(shè)置為NULL

      retTagInfo_len是一個輸出參數(shù),返回的會話標簽信息長度。

      found是一個輸出參數(shù)。用于會話池的參數(shù),設(shè)置為NULL

      mode是一個輸入?yún)?shù),取值OCI_SESSGET_CPOOL

      前面是創(chuàng)建連接池和獲取會話的函數(shù),中間可以通過會話執(zhí)行數(shù)據(jù)庫操作的其他OCI函數(shù)。后面是釋放會話和刪除連接池的函數(shù)。

      如果前面用了OCILogon2()函數(shù)來取得會話,那么要用OCILogoff()函數(shù)來釋放會話。

      sword OCILogoff ( OCISvcCtx *svchp, OCIError *errhp );

      svchp是一個輸入?yún)?shù),服務(wù)上下文句柄,從OCILogon2()函數(shù)中返回的句柄。

      errhp是一個輸入/輸出參數(shù),錯誤句柄,返回錯誤碼和錯誤信息文本。

      如果前面使用了OCISessionGet()函數(shù)來獲取會話,那么要用OCISessionRelease()函數(shù)來釋放會話。

      sword OCISessionRelease ( OCISvcCtx *svchp,
          OCIError  *errhp,
          OraText   *tag,
          ub4          tag_len,
          ub4          mode );

      svchp是一個輸入?yún)?shù),服務(wù)上下文句柄,從OCISessionGet()函數(shù)中返回的句柄。

      errhp是一個輸入/輸出參數(shù),錯誤句柄,返回錯誤碼和錯誤信息文本。

      tag是一個輸入?yún)?shù),只用于會話池的參數(shù),設(shè)置為NULL

      tag_len是一個輸入?yún)?shù),只用于會話池的參數(shù),設(shè)置為0

      mode是一個輸入?yún)?shù),取值OCI_DEFAULT

      刪除掉連接池,函數(shù)為OCIConnectionPoolDestroy(),原型和參數(shù)如下。

      sword OCIConnectionPoolDestroy ( OCICPool *poolhp,
          OCIError *errhp,
          ub4         mode );

      poolhp是一個輸入?yún)?shù),連接池句柄,與創(chuàng)建時的一致。

      errhp是一個輸入/輸出參數(shù),錯誤句柄,返回錯誤碼和錯誤信息文本。

      mode是一個輸入?yún)?shù),取值OCI_DEFAULT

      上面這些就是使用連接池時用到的函數(shù),其他一些分配句柄函數(shù)OCIHandleAlloc()和設(shè)置屬性函數(shù)OCIAttrSet()已經(jīng)在前面介紹過了,這里從略。

      下一節(jié)我們寫一段代碼,來看看使用連接池的整個過程。

      posted @ 2025-08-14 21:57  湯姆花花  閱讀(5)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲高潮喷水无码AV电影| 起碰免费公开97在线视频| 成人国产精品日本在线观看| 国产99在线 | 免费| 国精品午夜福利视频不卡| 日韩最新中文字幕| 四虎影视一区二区精品| 任我爽精品视频在线播放| 日日噜噜夜夜狠狠久久无码区| 日韩av片无码一区二区不卡| 亚洲中文字幕精品一区二区三区 | 亚洲人成电影在线天堂色| 丰满熟妇乱又伦在线无码视频 | 久热这里只精品视频99| 一级女性全黄久久生活片| 2021国产在线视频| 中文字幕免费不卡二区| 怡红院一区二区三区在线| 国产亚洲久久久久久久| 成人亚洲国产精品一区不卡| 翘臀少妇被扒开屁股日出水爆乳| 无码人妻丰满熟妇啪啪欧美| 国产性色的免费视频网站| 西充县| 亚洲第一无码专区天堂| 影音先锋大黄瓜视频| 波多野结衣久久一区二区| 中文字幕精品亚洲无线码二区| 日韩一区二区黄色一级片| 国产一区二区波多野结衣| 精品国产免费人成网站| 蜜桃av亚洲第一区二区| 国产一级区二级区三级区| 在线观看无码av免费不卡网站 | 亚洲精品tv久久久久久久久久| 91亚洲一线产区二线产区| 国产免费久久精品44| 国产精品无遮挡猛进猛出| 蜜桃臀av在线一区二区| 大地资源中文在线观看西瓜| 欧美喷潮最猛视频|