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

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

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

      OCI編程基礎篇(四) 連接數據庫的示例代碼

      訪問www.tomcoding.com網站,學習Oracle內部數據結構,詳細文檔說明,下載Oracle的exp/imp,DUL,logminer,ASM工具的源代碼,學習高技術含量的內容。

      先來總結一下連接數據庫的順序和步驟。

      1. 創建OCI環境句柄,OCIEnvCreate()。

      2. 分配錯誤句柄,OCIHandleAlloc()

      3. 分配服務器句柄,OCIHandleAlloc()。

      4. 建立與數據庫服務器的通信路徑,OCIServerAttach()。

      5. 分配服務上下文句柄,OCIHandleAlloc()

      6. 把服務器句柄放入服務上下文句柄中,OCIAttrSet()。

      7. 分配用戶會話句柄,OCIHandleAlloc()

      8. 設置用戶會話句柄的用戶和密碼屬性,OCIAttrSet()。

      9. 開啟一個用戶會話,OCISessionBegin()

      10. 把用戶會話句柄放入服務上下文句柄中,OCIAttrSet()。

      實際的代碼示例

      /* 定義全局變量 */
      OCIEnv          *envhp = NULL;          /* 環境句柄指針 */
      OCIError        *errhp = NULL;          /* 錯誤句柄指針 */
      OCIServer       *svrhp = NULL;          /* 服務器句柄指針 */
      OCISession      *usrhp = NULL;          /* 用戶會話句柄指針 */
      OCISvcCtx       *svchp = NULL;          /* 服務上下文句柄指針 */
      /*
       * Oralce數據庫ip地址為192.168.10.110,端口為1521,服務名為orcl
       * 數據庫用戶名為scott,密碼為tigger
       * 以上面的信息為例,連接到數據庫
       */int connect_oracle(void){
          sword       rc;
          char        user[32];
          char        passwd[32];
          char        dblink[256];
      
          /* 創建環境句柄 */
          rc = OCIEnvCreate(
              &envhp,
              OCI_DEFAULT,
              (void *)NULL,
              NULL,
              NULL,
              NULL,
              (size_t)0,
              (void **)NULL
          );
      
          if (rc != OCI_SUCCESS) {
              fprintf(stderr, "OCIEnvCreate() - allocate OCI env handle error !\n");
              return (-1);
          }
      
          /* 分配錯誤句柄 */
          rc = OCIHandleAlloc(
              (void *)envhp,
              (void **)&errhp,
              OCI_HTYPE_ERROR,
              0,
              (void **)NULL
          );
      
          if (rc != OCI_SUCCESS) {
              fprintf(stderr, "OCIHandleAlloc() - allocate OCI error handle error !\n");
              return (-1);
          }
      
          /* 分配服務器句柄 */
          rc = OCIHandleAlloc(
              (void *)envhp,
              (void **)&svrhp,
              OCI_HTYPE_SERVER,
              0,
              (void **)NULL
          );
      
          if (rc != OCI_SUCCESS) {
              fprintf(stderr, "OCIHandleAlloc() - allocate server handle error !\n");
              return (-1);
          }
      
          strcpy(dblink, "//192.168.10.110:1521/orcl");
      
          /* 建立到Oracle數據庫的通信路徑 */
          rc = OCIServerAttach(
              svrhp,
              errhp,
              (const OraText *)dblink,
              strlen(dblink),
              OCI_DEFAULT
          );
      
          if (rc != OCI_SUCCESS) {
              fprintf(stderr, "OCIServerAttach() - establish an access path error !\n");
              return (-1);
          }
      
          /* 分配服務上下文句柄 */
          rc = OCIHandleAlloc(
              (void *)envhp,
              (void **)&svchp,
              OCI_HTYPE_SVCCTX,
              0,
              (void **)NULL
          );
      
          if (rc != OCI_SUCCESS) {
              fprintf(stderr, "OCIHandleAlloc() - allocate service context error !\n");
              return (-1);
          }
      
          /* 把服務器句柄放入服務上下文句柄的屬性中 */
          rc = OCIAttrSet(
              (void *)svchp,
              OCI_HTYPE_SVCCTX,
              (void *)svrhp,
              0,
              OCI_ATTR_SERVER,
              errhp
          );
      
          if (rc != OCI_SUCCESS) {
              fprintf(stderr, "Set server attribute error !\n");
              return (-1);
          }
      
          /* 分配用戶會話句柄 */
          rc = OCIHandleAlloc(
              (void *)envhp,
              (void **)&usrhp,
              OCI_HTYPE_SESSION,
              0,
              (void **)NULL
          );
      
          if (rc != OCI_SUCCESS) {
              fprintf(stderr, "OCIHandleAlloc() - allocate session handle error !\n");
              return (-1);
          }
      
          strcpy(user, "scott");
      
          /* 設置認證用戶屬性 */
          rc = OCIAttrSet(
              (void *)usrhp,
              OCI_HTYPE_SESSION,
              (void *)user,
              strlen(user),
              OCI_ATTR_USERNAME,
              errhp
          );
      
          if (rc != OCI_SUCCESS) {
              fprintf(stderr, "Set user attribute error !\n");
              return (-1);
          }
      
          strcpy(passwd, "tigger");
      
          /* 設置認證密碼屬性 */
          rc = OCIAttrSet(
              (void *)usrhp,
              OCI_HTYPE_SESSION,
              (void *)passwd,
              strlen(passwd),
              OCI_ATTR_PASSWORD,
              errhp
          );
      
          if (rc != OCI_SUCCESS) {
              fprintf(stderr, "Set password attribute error !\n");
              return (-1);
          }
      
          /* 開啟一個用戶會話 */
          rc = OCISessionBegin(
              svchp,
              errhp,
              usrhp,
              OCI_CRED_RDBMS,
              OCI_DEFAULT
          );
      
          if (rc != OCI_SUCCESS) {
              fprintf(stderr, "OCISessionBegin() - establish user session error !\n");
              return (-1);
          }
      
          /* 把用戶會話句柄放入服務上下文句柄屬性中 */
          rc = OCIAttrSet(
              (void *)svchp,
              OCI_HTYPE_SVCCTX,
              (void *)usrhp,
              0,
              OCI_ATTR_SESSION,
              errhp
          );
      
          if (rc != OCI_SUCCESS) {
              fprintf(stderr, "Set user session attribute error !\n");
              return (-1);
          }
      
          return (0);
      }
      posted @ 2025-08-13 20:57  湯姆花花  閱讀(24)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日本视频一两二两三区| 欧美交a欧美精品喷水| 伊人激情av一区二区三区| 国产中文字幕一区二区| 人妻饥渴偷公乱中文字幕| 国产内射xxxxx在线| 午夜成人性爽爽免费视频| 黑人大战欲求不满人妻| 大尺度国产一区二区视频| 国产精品自在拍在线播放| 欧美成人精品在线| 国产精品视频全国免费观看| 黄色大全免费看国产精品| 国产精品国产三级国快看| 18禁成人免费无码网站| 亚洲av激情久久精品人| 最新国产AV最新国产在钱| 成人无码区在线观看| 亚洲一区二区三区日本久久 | 国产最新AV在线播放不卡| 最新偷拍一区二区三区| 欧日韩无套内射变态| 亚洲区综合中文字幕日日| 67194熟妇在线观看线路| 男女裸交免费无遮挡全过程| 又大又粗又爽的少妇免费视频| 成人午夜在线观看日韩| 又大又紧又粉嫩18p少妇| 国产免费午夜福利在线播放| 亚洲精品中文字幕在线观| 国产AV无码专区亚洲AV漫画| 日本一区二区三区四区黄色| 夜夜偷天天爽夜夜爱| 亚洲国产精品无码久久久| 四虎永久地址www成人| 国产午夜无码视频在线观看 | 人妻少妇偷人一区二区| 国产成人精品亚洲午夜| 国产成人啪精品视频免费APP| 国产精品久久久久久妇女| 国产真实younv在线|