• <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无码精品浪潮| 欧美伊人久久大香线蕉综合| 久久久这里有精品| 久久久久国产一区二区三区| 国产精品免费看久久久香蕉| 国产一级持黄大片99久久| 激情伊人五月天久久综合| 香蕉久久夜色精品升级完成| 久久乐国产综合亚洲精品| 伊人伊成久久人综合网777| 香蕉久久夜色精品国产2020| 久久午夜免费视频| 久久久国产视频| 久久精品国产亚洲AV无码娇色| 91精品国产综合久久婷婷| 久久久久久久综合日本亚洲 | 久久无码专区国产精品发布| 欧美久久久久久| 18岁日韩内射颜射午夜久久成人| 亚洲AV无码久久寂寞少妇| 久久人人爽人人爽人人片AV不 | 亚洲国产精品久久久久久| 国产免费福利体检区久久| 亚洲国产精品综合久久网络| 亚洲精品无码久久千人斩| 日韩一区二区久久久久久| 亚洲国产成人久久综合一区77 | 国产V亚洲V天堂无码久久久| 国产精品VIDEOSSEX久久发布| 久久精品国产色蜜蜜麻豆| 亚洲中文久久精品无码ww16 | 久久亚洲欧美日本精品| 久久久久这里只有精品| 无码专区久久综合久中文字幕| 伊人久久大香线蕉精品| 国产69精品久久久久观看软件 | 无码人妻精品一区二区三区久久久| 国产精品久久久久久福利69堂| 久久综合久久性久99毛片| 久久91精品国产91久久麻豆| 久久无码中文字幕东京热|