• <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

            常用鏈接

            相冊

            最新評論

            国产成人精品久久一区二区三区av| 久久久久亚洲国产| 色综合久久久久| 青青青国产精品国产精品久久久久 | 久久精品这里热有精品| 狠狠久久综合| 亚洲va久久久噜噜噜久久狠狠| 9久久9久久精品| 欧美粉嫩小泬久久久久久久| 亚洲狠狠婷婷综合久久蜜芽| 久久精品国产精品亚洲下载| 亚洲国产精品无码成人片久久| 婷婷综合久久狠狠色99h| 久久丝袜精品中文字幕| 久久精品国产99国产精品澳门| 亚洲精品乱码久久久久久蜜桃 | 99久久精品国产毛片| 亚洲精品午夜国产VA久久成人| 伊人久久精品线影院| 国内精品久久久久影院薰衣草 | 欧美久久一区二区三区| 久久w5ww成w人免费| 一级做a爰片久久毛片免费陪| 久久中文字幕一区二区| 91久久精品91久久性色| 中文字幕热久久久久久久| 无码任你躁久久久久久老妇| 99久久国产综合精品网成人影院 | 亚洲精品tv久久久久久久久| 精品伊人久久久| 综合久久一区二区三区 | 国产成人久久精品二区三区| 高清免费久久午夜精品| 久久精品国产亚洲av高清漫画| 久久国语露脸国产精品电影| 亚洲AⅤ优女AV综合久久久| 国内精品久久久久久麻豆| 久久综合丁香激情久久| 99久久婷婷国产综合精品草原 | 中文字幕日本人妻久久久免费 | 久久亚洲私人国产精品|