• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. Solaris下PRO*C和OCI程序設(shè)計(jì)分析與比較

        時(shí)間:2024-08-18 19:51:44 計(jì)算機(jī)畢業(yè)論文 我要投稿
        • 相關(guān)推薦

        Solaris下PRO*C和OCI程序設(shè)計(jì)分析與比較

        摘要文章對(duì)Solaris平臺(tái)下,開發(fā)基于Oracle數(shù)據(jù)庫的C程序的兩種方法——PRO*C和OCI進(jìn)行了研究,詳細(xì)分析了這兩種方法的開發(fā)流程,給出了較為具體的應(yīng)用程序例子,并對(duì)兩者的性能進(jìn)行了比較。
        關(guān)鍵詞Solaris,Oracle,PRO*C,OCI
        1引言
        數(shù)據(jù)庫在軟件開發(fā)中的應(yīng)用越來越廣泛,其中,Oracle可說是性能最強(qiáng)大、最穩(wěn)定的數(shù)據(jù)庫之一,大量的軟件開發(fā)選擇了Oracle。在開發(fā)語言的選擇上,C語言以其靈活、高效吸引了大批的軟件開發(fā)人員。這兩者的強(qiáng)強(qiáng)聯(lián)合也必具有較高的性能,在實(shí)際中有廣泛的應(yīng)用。這就是PRO*C和OCI程序設(shè)計(jì)。
        Oracle常常應(yīng)用在服務(wù)器中,Solaris又是服務(wù)器的首選平臺(tái),因此,本文主要介紹PRO*C和OCI程序設(shè)計(jì)在Solaris平臺(tái)上的應(yīng)用和實(shí)現(xiàn),對(duì)在Windows平臺(tái)和Linux平臺(tái)上的應(yīng)用和實(shí)現(xiàn)也可作為參考。本文所采用的開發(fā)環(huán)境為Solaris2.8、Oracle8.1.7。
        2PRO*C程序設(shè)計(jì)
        PRO*C是Oracle提供的應(yīng)用程序?qū)S瞄_發(fā)工具,它以C語言為宿主語言,能在C程序中嵌入SQL語句,進(jìn)行數(shù)據(jù)庫操作。這種嵌入式的SQL語句容易掌握,適合初學(xué)者。
        2.1設(shè)置開發(fā)環(huán)境
        (1)C編譯器
        Solaris系統(tǒng)中常用的C語言編譯器是GCC,是GNU組織的免費(fèi)C編譯器,一般Linux版本中缺省都安裝有GCC,UNIX系統(tǒng)中有的并不自帶,因此需要手動(dòng)安裝,本文所采用的GCC版本為3.2。
        (2)PRO*C預(yù)編譯器
        PRO*C使用預(yù)編譯技術(shù),預(yù)編譯器將源程序中的SQL語句轉(zhuǎn)換為標(biāo)準(zhǔn)的Oracle庫函數(shù)調(diào)用,從而生成C源程序,再經(jīng)C編譯器編譯、鏈接后生成可執(zhí)行文件。這個(gè)預(yù)編譯器是Oracle自帶的。
        (3)C語言頭文件和函數(shù)庫。
        Oracle安裝程序?qū)⑦@些文件安裝在$ORACLE_HOME/precomp目錄下。
        2.2開發(fā)PRO*C程序
        (1)說明SQL通訊區(qū)
        SQL通訊區(qū)用來記錄執(zhí)行每一個(gè)嵌入SQL語句的狀態(tài)信息,通過在函數(shù)體外使用下列語句實(shí)現(xiàn):
        #include或者EXECSQLINCLUDEsqlca;
        (2)聲明宿主變量,即C變量
        這些變量是應(yīng)用程序與Oracle通信的橋梁,應(yīng)用程序的輸入數(shù)據(jù)通過C變量傳遞給Oracle,反之,Oracle的輸出數(shù)據(jù)又通過C變量傳遞給應(yīng)用程序。舉例如下:
        EXECSQLBEGINDECLARESECTION;
        charszUsername[16];
        VARCHARvarPassword[16];
        char*szStmt1="CREATETABLEUSERS(USERNAMEVARCHAR2(15)NOTNULL,PASSWORD
        VARCHAR2(15)NOTNULL)";
        char*szStmt2="SELECTPASSWORDFROMUSERSWHEREUSERNAME=’chen’";
        EXECSQLENDDECLARESECTION;
        值得注意的是:在SQL語句中使用C變量時(shí),前面需加冒號(hào),例如上面的變量應(yīng)表示為:szUsername。其中,VARCHAR為C擴(kuò)展數(shù)據(jù)類型,預(yù)編譯時(shí),PRO*C預(yù)編譯器將它擴(kuò)展為一個(gè)C結(jié)構(gòu)類型struct{
        unsignedshortlen;
        unsignedchararr[16];
        }varNo;
        在SQL語句中使用VARCHAR類型變量時(shí),只需指出結(jié)構(gòu)名稱varPassword就可,但在C語句中使用VARCHAR類型變量時(shí),必須具體說明所操作變量的結(jié)構(gòu)元素名稱是varPassword.len還是varPassword.arr。另外,如果用VARCHAR類型變量做函數(shù)參數(shù)的話,只能用指針形式。
        (3)連接數(shù)據(jù)庫
        EXECSQLCONNECT:username/password@DBname;
        通過sqlca.sqlcode的值來判斷連接數(shù)據(jù)庫成是否功。
        (4)執(zhí)行SQL語句(分為靜態(tài)SQL語句和動(dòng)態(tài)SQL語句)
        靜態(tài)SQL語句是在開發(fā)應(yīng)用程序時(shí)就已經(jīng)明確了的數(shù)據(jù)庫操作,如:
        EXECSQLSELECTpasswordINTO:szPasswordFROMUSERSWHEREusername=:szUsername;
        動(dòng)態(tài)SQL語句是在運(yùn)行時(shí)由外部數(shù)據(jù)提供的,不能直接在C程序中嵌入SQL語句,但可以調(diào)用放在一個(gè)字符串變量里的SQL語句,最簡(jiǎn)單的方法是:EXECSQLEXECUTEIMMEDIATE:szStmt1;但這樣執(zhí)行的SQL語句不能實(shí)現(xiàn)查詢,實(shí)現(xiàn)查詢可用下列方法:
        EXECSQLPREPAREselect_stmtFROM:szStmt2;
        EXECSQLEXECUTEselect_stmtINTO:szPassword;
        如果不再需要已準(zhǔn)備好的語句,應(yīng)釋放:EXECSQLDEALLOCATEPREPAREselect_stmt;
        (5)提交或回滾所做的數(shù)據(jù)庫處理,并退出數(shù)據(jù)庫
        回滾:EXECSQLROLLBACKWORKRELEASE;
        提交:EXECSQLCOMMITWORKRELEASE;
        注意語句中的RELEASE選項(xiàng),它要求關(guān)閉所有打開的游標(biāo),之后斷開與數(shù)據(jù)庫服務(wù)器的連接。
        2.3生成可執(zhí)行文件
        在Solaris平臺(tái)下可通過命令方式對(duì)PRO*C源程序進(jìn)行預(yù)編譯,下列命令只列出了最常用的預(yù)編譯選項(xiàng):#prociname=example.cINCLUDE=pathCODE=ANSI_CMODE=ANSICPP_SUFFIX=cc
        SQLCHECK=SEMANTICSUSERID=username/password@DBname
        預(yù)編譯后的example.cc文件就可以當(dāng)作普通的C源文件來進(jìn)行處理了。
        #gcc-oexampled–I.-I/oracle/product/8.1.7/precomp/publicexample.cc
        最終生成的exampled文件就是我們的可執(zhí)行文件。

        3OCI程序設(shè)計(jì)
        OCI(OracleCallInterface)是由頭文件和庫函數(shù)等組成的一套Oracle數(shù)據(jù)庫應(yīng)用

        【Solaris下PRO*C和OCI程序設(shè)計(jì)分析與比較】相關(guān)文章:

        新準(zhǔn)則下資產(chǎn)減值的比較分析03-24

        C語言程序設(shè)計(jì) (一)12-26

        多媒體課件制作-《C程序設(shè)計(jì)》03-08

        I2C總線在uClinux操作系統(tǒng)下的驅(qū)動(dòng)程序設(shè)計(jì)11-22

        公司治理模式的比較和發(fā)展趨勢(shì)分析03-19

        語言符號(hào)任意性和象似性的分析比較11-30

        中美投資準(zhǔn)則的比較與分析03-18

        英漢被動(dòng)結(jié)構(gòu)比較分析03-12

        論獨(dú)立學(xué)院 C語言程序設(shè)計(jì)教學(xué)改革與實(shí)踐03-27

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲色香蕉一区二区三区 | 伊人久久综合热线大杳蕉 | 亚洲欧美卡通动漫一区二区 | 日本中文子幕亚洲乱码 | 亚洲欧洲国产精品香蕉网 | 中文字幕在线观看日韩少妇 |