• <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
            一步一個(gè)腳印向前走
             1 
             2 #include "oci.h"
             3 #include <stdio.h>
             4 #include <stdlib.h>
             5 #include <string.h>
             6 
             7 
             8 void myfflush() 
             9 {
            10   eb1 buf[50];
            11   fgets((char *) buf, 50, stdin);
            12 
            13 
            14 int main()
            15 {
            16       OCIEnv    *m_envhp;
            17       OCIError  *m_errhp;
            18       OCIServer *m_srvhp;
            19       OCISvcCtx *m_svchp;
            20       OCIStmt   *m_stmthp;
            21       OCIBind   *bnd1p = NULL;
            22       OCIBind   *bnd2p = NULL;
            23       
            24       char username[255];
            25       char password[30];
            26       char dbname[30];
            27       char szSqlStr[255];
            28       char empname[100];
            29       char empno[10];
            30       
            31       strcpy(username,"liugang");
            32       strcpy(password,"LiuGang");
            33       strcpy(dbname,"LinkAge");
            34       
            35       int i;
            36       for(i=0;i<100;i++)
            37           empname[i]='\0';
            38           
            39       OCIInitialize((ub4)OCI_DEFAULT,(dvoid *)0,(dvoid *(*)(dvoid *,size_t))0,(dvoid *(*)(dvoid *,dvoid *,size_t))0,(void (*)(dvoid *,dvoid *)) 0 );
            40       OCIEnvInit((OCIEnv **)&m_envhp, OCI_DEFAULT, (size_t) 0,(dvoid **0 );
            41   
            42       OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_errhp,OCI_HTYPE_ERROR,(size_t) 0, (dvoid **0);
            43       OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_srvhp,OCI_HTYPE_SERVER,(size_t) 0, (dvoid **0);
            44       OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_svchp,OCI_HTYPE_SVCCTX,(size_t) 0, (dvoid **0);
            45       OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_stmthp,OCI_HTYPE_STMT,(size_t) 0, (dvoid **)0);
            46       
            47       OCIServerAttach(m_srvhp, m_errhp,(text *)dbname, strlen(dbname),(ub4) OCI_DEFAULT);
            48       OCILogon(m_envhp,m_errhp,&m_svchp,(text *)username,strlen(username),(text *)password,strlen(password),(text *)dbname,strlen(dbname));
            49       
            50       OCIDefine *defnp0 = (OCIDefine *0;
            51       
            52       printf("Please input your emp number:");
            53       scanf("%s",empno);
            54       
            55       myfflush();
            56 
            57         
            58       sprintf( szSqlStr,"%s""SELECT ENAME FROM EMP WHERE EMPNO = :empno");
            59 
            60       OCIStmtPrepare(m_stmthp, m_errhp, (text*)szSqlStr, (ub4)strlen(szSqlStr),(ub4) OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT);
            61       int m =sizeof(empno);
            62       
            63       //OCIBindByName(m_stmthp, &bnd1p, m_errhp, (text *)":empno",-1, (ub1 *) empno,(sword) sizeof(empno)-1, SQLT_CHR, (dvoid *) 0,(ub2 *) 0, (ub2) 0, (ub4) 0, (ub4 *) 0, OCI_DEFAULT);
            64       
            65       OCIBindByPos(m_stmthp, &bnd1p, m_errhp, 1, (dvoid *)empno, sizeof(empno)-1, SQLT_CHR, 00000, (ub4) OCI_DEFAULT);
            66 
            67       OCIDefineByPos( m_stmthp, &defnp0, m_errhp, 1, (dvoid *)empname, 100, SQLT_STR,(dvoid *0, (ub2 *)0, (ub2 *)0, OCI_DEFAULT);
            68       
            69       OCIStmtExecute( m_svchp, m_stmthp, m_errhp, (ub4) 1, (ub4) 0,(OCISnapshot *) NULL,(OCISnapshot *) NULL, (ub4) OCI_DEFAULT); 
            70       
            71       OCILogoff( m_svchp, m_errhp );
            72       if(empname[0]=='\0')
            73           strcpy(empname,"無此人");
            74       printf("The employee name is:%s",empname);
            75       
            76       OCIServerDetach( m_srvhp, m_errhp, OCI_DEFAULT );
            77       OCIHandleFree((dvoid *) m_stmthp, OCI_HTYPE_STMT);
            78       OCIHandleFree((dvoid *) m_svchp, OCI_HTYPE_SVCCTX);
            79       OCIHandleFree((dvoid *) m_srvhp, OCI_HTYPE_SERVER);
            80       OCIHandleFree((dvoid *) m_errhp, OCI_HTYPE_ERROR);
            81       getchar();
            82       return 1;
            83 
            84 
            在對:empno變量進(jìn)行綁定的時(shí)候,和以往差不多,有按名稱綁定和位置綁定兩種方法,在上面代碼中使用的是按位置進(jìn)行的綁定,按名稱進(jìn)行綁定被注釋了,有興趣的可以自己研究一下,文檔中推薦使用的是按位置綁定,具體的原因還沒有查清楚,希望知情者提供線索......

            運(yùn)行結(jié)果如下:



            在這里還存在這樣一個(gè)問題:SELECT ENAME FROM EMP WHERE EMPNO = :empno不可以寫成SELECT ENAME FROM EMP WHERE EMPNO = ':empno',雖然在數(shù)據(jù)庫中EMPNO是VARCHAR2類型的,我個(gè)人認(rèn)為在使用OCIBindByPos的時(shí)候,已經(jīng)指定了綁定的變量是SQLT_CHR類型的,所以就沒有必要在語句中使用':empno'了,這只是一家之言,希望有不同想法的同志可以提出,共同討論......
            posted on 2007-05-25 14:48 LG 閱讀(836) 評論(0)  編輯 收藏 引用 所屬分類: CPlusPlus

            <2008年1月>
            303112345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            相冊

            最新評論

            国产精品岛国久久久久| 伊人久久大香线蕉精品| 久久www免费人成看片| 97久久精品无码一区二区天美| 青草影院天堂男人久久| 精产国品久久一二三产区区别| 久久久噜噜噜www成人网| 久久精品国产精品亚洲艾草网美妙| 亚洲成av人片不卡无码久久| 久久婷婷五月综合97色| 色综合久久久久综合99| 国产午夜精品久久久久免费视 | 久久人人超碰精品CAOPOREN| 久久午夜福利无码1000合集| 曰曰摸天天摸人人看久久久| 亚洲午夜久久久久久久久久| 无码人妻久久一区二区三区蜜桃| 国产午夜精品理论片久久影视| 久久无码高潮喷水| 久久综合伊人77777麻豆| 久久综合九色综合欧美狠狠| 色欲av伊人久久大香线蕉影院| 无码乱码观看精品久久| 久久97久久97精品免视看| 狠狠色丁香婷婷综合久久来| 久久精品夜夜夜夜夜久久| 久久久噜噜噜久久中文字幕色伊伊| 久久黄视频| 久久久久人妻精品一区三寸蜜桃| 亚洲精品国产成人99久久| 久久久精品午夜免费不卡| 国产亚洲综合久久系列| 999久久久无码国产精品| 国产精品无码久久综合 | 久久久亚洲裙底偷窥综合| 日本久久中文字幕| 久久福利资源国产精品999| 亚洲va久久久久| 亚洲AV无码久久精品蜜桃| 久久久无码人妻精品无码| 狠狠色丁香久久综合婷婷|