• <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>
            BLUESKY
            一步一個腳印向前走
              1 // OracleCallInterface.cpp : Defines the entry point for the console application.
              2 //
              3 
              4 #include "stdafx.h"
              5 #include "oci.h"
              6 #include<stdio.h>
              7 #include<stdlib.h>
              8 #include<string.h>
              9 
             10 typedef struct 
             11 {
             12     char empno[10];
             13     char ename[10];
             14     int  age;
             15     char sex[4];
             16 }cdr;
             17 
             18 int _tmain(int argc, _TCHAR* argv[])
             19 {
             20       OCIEnv    *m_envhp;
             21       OCIError  *m_errhp;
             22       OCIServer *m_srvhp;
             23       OCISvcCtx *m_svchp;
             24       OCIStmt   *m_stmthp;
             25       sword swResult;
             26       cdr  t_cdr;
             27       OCIDefine *hDefine = (OCIDefine *0;
             28       OCIDefine *hDefine1 = (OCIDefine *0;
             29       OCIDefine *hDefine2 = (OCIDefine *0;
             30       OCIDefine *hDefine3 = (OCIDefine *0;
             31       OCIDefine *hDefine4 = (OCIDefine *0;
             32       int i;
             33       
             34       char username[255];
             35       char password[30];
             36       char dbname[30];
             37       char szSqlStr[255];
             38           
             39       strcpy(username,"liugang");
             40       strcpy(password,"LiuGang");
             41       strcpy(dbname,"LinkAge");
             42       
             43       OCIInitialize((ub4)OCI_DEFAULT,(dvoid *)0,(dvoid *(*)(dvoid *,size_t))0,(dvoid *(*)(dvoid *,dvoid *,size_t))0,(void (*)(dvoid *,dvoid *)) 0 );
             44       OCIEnvInit((OCIEnv **)&m_envhp, OCI_DEFAULT, (size_t) 0,(dvoid **0 );
             45   
             46       OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_errhp,OCI_HTYPE_ERROR,(size_t) 0, (dvoid **0);
             47       OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_srvhp,OCI_HTYPE_SERVER,(size_t) 0, (dvoid **0);
             48       OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_svchp,OCI_HTYPE_SVCCTX,(size_t) 0, (dvoid **0);
             49       OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_stmthp,OCI_HTYPE_STMT,(size_t) 0, (dvoid **)0);
             50       
             51       OCIServerAttach(m_srvhp, m_errhp,(text *)dbname, strlen(dbname),(ub4) OCI_DEFAULT);
             52       OCILogon(m_envhp,m_errhp,&m_svchp,(text *)username,strlen(username),(text *)password,strlen(password),(text *)dbname,strlen(dbname));
             53       
             54 
             55       sprintf( szSqlStr,"%s""SELECT EMPNO,ENAME,AGE,SEX FROM EMP ORDER BY EMPNO ASC");
             56       OCIStmtPrepare(m_stmthp, m_errhp, (text*)szSqlStr, (ub4)strlen(szSqlStr),(ub4) OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT);
             57       
             58       OCIDefineByPos(m_stmthp,&hDefine1,m_errhp,1,&t_cdr.empno,sizeof(t_cdr.empno), SQLT_CHR, NULL, NULL, NULL, OCI_DEFAULT);
             59       OCIDefineByPos(m_stmthp,&hDefine2,m_errhp,2,&t_cdr.ename,sizeof(t_cdr.ename), SQLT_CHR, NULL, NULL, NULL, OCI_DEFAULT);
             60       OCIDefineByPos(m_stmthp,&hDefine3,m_errhp,3,&t_cdr.age,sizeof(t_cdr.age), SQLT_INT, NULL, NULL, NULL, OCI_DEFAULT);
             61       OCIDefineByPos(m_stmthp,&hDefine4,m_errhp,4,&t_cdr.sex,sizeof(t_cdr.sex), SQLT_CHR, NULL, NULL, NULL, OCI_DEFAULT);
             62       OCIDefineArrayOfStruct(hDefine, m_errhp, sizeof(t_cdr), 000);
             63       OCIStmtExecute( m_svchp, m_stmthp, m_errhp, (ub4) 1, (ub4) 0,(OCISnapshot *) NULL,(OCISnapshot *) NULL, (ub4)OCI_STMT_SCROLLABLE_READONLY ); 
             64       
             65       int rows_fetched;
             66      
             67       do
             68       {
             69         for(i=0;i<10;i++)
             70           {
             71             if(t_cdr.empno[i]==' ')
             72             {
             73                 t_cdr.empno[i]='\0';
             74                 break;
             75             }
             76           }
             77         for(i=0;i<10;i++)
             78           {
             79               if(t_cdr.ename[i]==' ')
             80             {
             81                 t_cdr.ename[i]='\0';
             82                 break;
             83             }
             84           }
             85           for(i=0;i<4;i++)
             86           {
             87               if(t_cdr.sex[i]==' ')
             88             {
             89                 t_cdr.sex[i]='\0';
             90                 break;
             91             }
             92           }
             93           
             94           printf("%s\t%s\t%d\t%s\n",t_cdr.empno,t_cdr.ename,t_cdr.age,t_cdr.sex);
             95       }
             96       while ((swResult=OCIStmtFetch2(m_stmthp,m_errhp,1,OCI_FETCH_NEXT,1,OCI_DEFAULT))!=OCI_NO_DATA);
             97       OCIAttrGet((CONST void *)m_stmthp,OCI_HTYPE_STMT,(void *)&rows_fetched,(ub4 *)sizeof(rows_fetched),OCI_ATTR_ROW_COUNT ,m_errhp);
             98       printf("\n總共記錄數(shù):%d",rows_fetched);
             99       OCILogoff( m_svchp, m_errhp );
            100       OCIServerDetach( m_srvhp, m_errhp, OCI_DEFAULT );
            101       OCIHandleFree((dvoid *) m_stmthp, OCI_HTYPE_STMT);
            102       OCIHandleFree((dvoid *) m_svchp, OCI_HTYPE_SVCCTX);
            103       OCIHandleFree((dvoid *) m_srvhp, OCI_HTYPE_SERVER);
            104       OCIHandleFree((dvoid *) m_errhp, OCI_HTYPE_ERROR);
            105       getchar();
            106       return 0;
            107 }
            108 
            109
            在這里,OCIInitialize()和OCIEnvInit()函數(shù)可以被OCIEnvCreate替換:
            OCIEnvCreate((OCIEnv **)&m_envhp,OCI_DEFAULT,(dvoid *)0,(dvoid *(*)(dvoid *,size_t))0,(dvoid *(*)(dvoid *,dvoid *,size_t))0,(void (*)(dvoid *,dvoid *))0,(size_t)0,(dvoid **)0);
            從數(shù)據(jù)庫中的emp表中讀出的數(shù)據(jù), 結(jié)果如下:


            偶然發(fā)現(xiàn),還有一種類型是SQLT_STR,如果把SQLT_CHR替換成SQLT_STR就可以不用手動在末尾加上'\0',終于解決了
            posted on 2007-05-24 20:42 LG 閱讀(4857) 評論(0)  編輯 收藏 引用 所屬分類: CPlusPlus

            <2007年8月>
            2930311234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            常用鏈接

            相冊

            最新評論

            国产精品美女久久久m| 精品无码人妻久久久久久| 一本色综合久久| 国产无套内射久久久国产| 久久九九青青国产精品| 久久亚洲av无码精品浪潮| 久久香综合精品久久伊人| 午夜视频久久久久一区| 漂亮人妻被中出中文字幕久久| 久久久99精品一区二区| 久久无码AV一区二区三区| 狠狠色综合网站久久久久久久| 国产精品一久久香蕉产线看| 中文字幕无码久久人妻| 国产精品99久久久久久宅男 | 国产婷婷成人久久Av免费高清| 久久精品午夜一区二区福利 | 精品免费久久久久久久| 精品精品国产自在久久高清| 精品久久久久久国产牛牛app| 久久中文精品无码中文字幕| 久久se精品一区二区影院 | 亚洲七七久久精品中文国产| 久久久久久无码Av成人影院| 精品久久久久久中文字幕| 午夜精品久久影院蜜桃| 青青青伊人色综合久久| 久久综合久久美利坚合众国| 久久国产成人精品国产成人亚洲| 久久久久亚洲AV无码网站| 亚洲色欲久久久综合网| 日产精品久久久一区二区| 久久综合视频网站| 久久中文娱乐网| 91久久精品国产成人久久| 99久久精品日本一区二区免费| 99久久国产综合精品女同图片| 国产高潮久久免费观看| 色天使久久综合网天天| 97香蕉久久夜色精品国产| 中文国产成人精品久久不卡|