版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、公告:音見反饋官方博客C+ +連接Oracle收藏在VisualC+下開發(fā)Oracle庫接口主要有兩種方法。一種方法是利用VisualC+ +提供的多種庫訪問技術(shù),如開放i庫連接ODBC、數(shù)據(jù)存取對象DAO、對象連接和嵌入庫OLEDB和ActiveX數(shù)據(jù)對象ADO等。另一種方法是在VisualC + +中嵌入SQL語句,這就是所指的 Pro*C/C+ (本文簡稱PROC X前一種方法由于有MFC強(qiáng)大的類庫支持,熟悉VC編程時則實(shí) 現(xiàn)方便,且可移植性強(qiáng);但是,與PROC相比,應(yīng)用程序需要經(jīng)過兩層才能和數(shù)據(jù)庫通信接口建 立聯(lián)系,編程相對復(fù)雜,執(zhí)行效率相對較低。PROC支持嵌入式PL/SQL塊等直接
2、調(diào)用Oracle庫, 將過程化語言和非過程化語言相結(jié)合,形成一種更強(qiáng)的開發(fā)工具,可開發(fā)出滿足各種復(fù)雜要求的優(yōu) 化應(yīng)用程序,擁亍效率高。適合熟悉Oracle技術(shù)的人員應(yīng)用。但是用PROC開發(fā)出的應(yīng)用程序無法向異構(gòu)庫平臺移植。本文詳細(xì)描述實(shí)際利用PROC在VisualC+ +環(huán)境下幵發(fā)Oracle數(shù)據(jù)庫接口程序的方法和具體 操作步驟,并給岀了編程實(shí)例。敘述以VisualC+6.0版和OracleBi版為例,其他版本可根據(jù)實(shí) 際情況變更。幾個特殊文件PROC在VC下開發(fā)Oracle庫接口時,需要用到幾個特殊文件。1、PROC的可執(zhí)行文件PROCUI.EXE用Oracle_HOME代表Oracle安裝
3、后的根目錄,當(dāng)其以缺省方式安裝在計(jì)算機(jī)的D盤時,則 Oracle_HOME 位置是 D:Oracle。 這時 PROC 的可執(zhí)行文件在 Oracle_HOMEOra81BINPROCUI.EXE 對缺省安裝即在D:OracleOra81BINPROCUI.EXE.2、Oracle支捋SQL在VC環(huán)境的庫文件OraSQL8.UB根 據(jù) 以 上 約 定 , OraSQL8.UB 文 件 在 Oracle_HOMEOra81PRECOMPUBMSVCOraSQL8.UB ,對缺省安裝即在 D:OradeOra81PRECOMPLIBMSVCOvSQL8 丄 IB。3、Oracle支持SQL在VC環(huán)境
4、的頭文件根據(jù)以上約定,頭文件th在 6acle_HOMEOra81PRECOMPPUBUC*.h ,對缺省安裝即 在 D:0racle0ra81PREC0MPPUBLICth。.h是頭文件的總稱,通常有十多個,具體內(nèi)容可在指定路徑下查到。將PROC集成到VC環(huán)境中為了方便完成用PROC在VC下開發(fā)Oracle庫接口 ,通常將PROC集成到VisualC + + 6.0環(huán) 境中,直接在C/C + +環(huán)境中使用PROC預(yù)編譯器來預(yù)編譯應(yīng)用程序,然后進(jìn)行編譯和鏈接,最終 生成可執(zhí)行程序。將PROC隼成到VC壞境中應(yīng)完成如下工作。1、增加PROC到Tools菜單列表a)運(yùn)行 MicrosoftVisu
5、alC+ +6.0 ;b)從菜單項(xiàng)Tools中選擇Customize項(xiàng)。為表述簡單起見,書寫成如下格式:菜單 Tools/Customize項(xiàng)。以下采用類似的表達(dá)方法。此時出現(xiàn)Customize對話框;c)單擊Tools選項(xiàng)卡(或?qū)傩皂摚?用鼠標(biāo)移動"Menucontents"框滾動條到底部區(qū)域;d)雙擊點(diǎn)劃線矩形區(qū)域,在空白區(qū)域上輸入"PROC",然后按回車鍵;e)在"Command"框中,輸入PROC的可執(zhí)行文件名。根據(jù)2.1節(jié)的說明,對缺省安裝即輸 入 D:OracleOra81BINPROCUI.EXE ;f)在"A
6、rguments"框中輸入"$(TargetName)"。其作用在從菜單Tools中選擇PROC項(xiàng)時, VC會將當(dāng)前項(xiàng)目名傳遞給PROC,爾后PROC會直接打開該項(xiàng)目文件目錄下擴(kuò)展名為.pre的同名 文件;g)在"Initialdirectory” 框中輸入"$(WkspDir)" /單擊"Close"按鈕,完成將 PROC 集成 到VC環(huán)境中的工作。2、指定頭文件路徑為了確保VC順利完成編譯鏈接,需要將Oracle提供的頭文件增加到VC壞境中。指定頭文 件路徑的具體步驟如下。a)菜單 Tools/Options
7、項(xiàng),出現(xiàn)"Options"對話框;b)單擊"Directories"選項(xiàng)卡,從"Showdiectoriesfor:"列表框中選擇"Includefiles"c)移動"Directories"框的滾動條到底部區(qū)域;d)雙擊點(diǎn)劃線矩形區(qū)域在空白區(qū)域上輸入包含Oacle支持SQL在VC環(huán)境頭文件的子目錄, 根據(jù)2.3節(jié)的說明,對缺省安裝即輸入D:OvcleOv81PRECOMPPUBUC。編程舉例1、程序內(nèi)容般SQL嵌入式程序主要有說明、包含頭文件、子程序聲明、主程序和子程序等部分組成,在主程序中調(diào)
8、用有關(guān)子程序。必備的子程序通常有連接到婁庫子砸斷開數(shù)據(jù)庫子衝、衙吳處理子程序和完成某項(xiàng)具體事務(wù)(如查詢、插入、修改、刪除等)的工作子程序。2、程序舉例下面是一完整的可通過預(yù)編譯、編譯鏈接和運(yùn)行的示例程序。/*exam01.pc開發(fā)Oracle接口程序舉例背/廠說明:本程序介紹用PROC開發(fā)Oracle庫接口的編程特點(diǎn)。通過向AUTHS,表輸入作家代碼,查詢作家姓名及工資。運(yùn)行前應(yīng)建表、插入數(shù)據(jù)并提交。*/ # include<stdio.h> # include<stri ng.h>#include<stdlib.h>廠包含SQL通訊區(qū),它用于處理錯誤。*/
9、#in clude<sqlca.h>voidconnectO;/* 連接到 OracleServer*/ voiddisconnect();/*®rjf到 OracleServer 的連接*7 voidsql_error(cha廣);廠處理錯誤句柄*/ voidselect();/* 查詢子程序*/ externsqlglmCcharinCjnt*);廠主程序*/voidmain()廠安裝錯誤處理句柄*/EXECSQLWHENEVERSQLERRORDOsql_error("Oracle 錯誤rT);廠連接到數(shù)據(jù)庫*/connectO;廠執(zhí)行查詢*/select
10、();廠斷開數(shù)據(jù)庫連接*/disconnect();廠子程序*/廠連接子程序connectO*/voidconnectOEXECSQLBEGINDECLARESECTION;VARCHARusername10,password10,server10;EXECSQLENDDECLARESECTION;廠輸入用戶名、口令以及服務(wù)器名*/printf("n輸入用戶名:');gets(username.arr);username.Ien=(unsignedshort)strlen(char*)username.arr);printf("n 輸入口令:");gets
11、(password.arr);password.Ien=(unsignedshort)strlen(char*)password.arr);printf("n輸入服務(wù)器名:');gets(server.arr);server.len=(unsignedshort)strlen(char*)server.arr);廠連接到Oracle服務(wù)器上*/EXECSQLCONNECT:usernameIDENTIFIEDBY:passwordUSING:server;printf(wn 以用戶s 成功地連接到了服務(wù)器s_t ! n",username.arr,server.ar
12、r);廠斷開連接子程序disconnectO*/voiddisconnect()chartemp;printf("n是否在斷開連接前提交所有事務(wù)? (Y/N)");scanf("%c&temp);fflush (stdin);if(temp!='Y'&&temp!二'y')廠回退事務(wù),斷開連接。*/EXECSQLROLLBACKWORKRELEASE;printf('n回退事務(wù),斷開連接,退出程序! W);else廠提交事務(wù),斷開連接。*/EXECSQLCOMMITWORKRELEASE;printf
13、(-n提交事務(wù),斷開連接,退出程序! W); exit(l);廠查詢子程序select()首先輸入作家代碼,然后查詢作家姓名和工資。VvoidselectQEXECSQLBEGINDECLARESECTION;charauthor_code8,name10;floatsalary;shortsalaryjnd;EXECSQLENDDECLARESECTION;printf("n輸入作家代碼:J;gets(author_code);廠查詢作家姓名和工資*/EXECSQLSELECTname,salaryINTO:name,:salary:salary_indFROMauthsWHERE
14、author_code=:author_code;廠根據(jù)指示變量的值來確定該作家的工資是否為空。*/if(salary_ind=O)printf('n作家代碼t作家姓名t作家工資W);printf("ttn");printf('%8st%8st%8.2fn',author_code,name,salary);elseprintf(作家$的工資未錄入,為空值! nname);廠錯誤處理子程序sqLerror()*/voidsql_error(char*msg)charerr_msg128;size_tbuf_len,msg廠出現(xiàn)SQL錯誤.繼續(xù)往下執(zhí)行
15、*/EXECSQLWHENEVERSQLERRORCONTINUE; printf("n%sn",msg);bufjen=sizeof(err_msg);廠調(diào)用函數(shù)sqlglmO獲得錯誤;肖息。*/sqlglm(err_msg,&buf_ler&msgen); printf(n%.*snmsgerberr_msg);廠回退事務(wù),斷開連接,退出程序。7EXECSQLROLLBACKRELEASE;exit(EXITJAILURE);3.建表和插入婁記錄上述示例程序如要正確運(yùn)行,還需以O(shè)racle庫的合法用戶登錄,并創(chuàng)建AUTHS表和插入一記錄。建表文件、建表命
16、令和插入數(shù)據(jù)記錄的示例命令如下所述。這里敘述的工作完成后, 上節(jié)生成的可執(zhí)行文件才能正確運(yùn)行。REM以下為建表文件auths.SQLDROPTABLEauthsCASCADECONSTRAINTSCREATETABLEauths(AUTHOR_CODEVARCHAR2(8)NOTNULL,NAMEVARCHAR2(10),BIRTHDATEDATE,ENTRY DATE TIMEDATE,SALARYNUMBER(7,2),remarkVARCHAR2(255)REM下一行為在PL/SQL環(huán)境中運(yùn)行建表文件的命令REME!PROCWExam01auths.sql的命令,插入后應(yīng)提交(COMMIT) !REM下一行為在PL/SQL壞境中向auths表插人REMINSERTINTOauths(author_code,name,salary)VALUES(,A00001,;lW,1200);發(fā)表于
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度智能交通管理系統(tǒng)軟件開發(fā)類框架合同3篇
- 2025年影視作品放映合同3篇
- 2024裝修用環(huán)保板材訂貨協(xié)議模板版B版
- 中外機(jī)械設(shè)備銷售協(xié)議標(biāo)準(zhǔn)文本版A版
- 個性化定制2024版婚禮策劃與執(zhí)行服務(wù)合同版B版
- 二零二五版咖啡館吧臺員工健康體檢服務(wù)協(xié)議2篇
- 二零二五版建筑工程防霉防蟲質(zhì)量檢測協(xié)議3篇
- 二零二五版商業(yè)地產(chǎn)項(xiàng)目借款擔(dān)保協(xié)議3篇
- 2025年房產(chǎn)抵押貸款利息調(diào)整合同3篇
- 2024幼兒教育機(jī)構(gòu)教師勞動合同書9篇
- 2023年小學(xué)科學(xué)教研組教研工作總結(jié)(5篇)
- 三年級上冊遞等式計(jì)算練習(xí)300題及答案
- 政治畫像品德操守自我評價(jià)3篇
- 奶茶督導(dǎo)述職報(bào)告
- 山東萊陽核電項(xiàng)目一期工程水土保持方案
- 白熊效應(yīng)(修訂版)
- 視頻監(jiān)控維保項(xiàng)目投標(biāo)方案(技術(shù)標(biāo))
- 社會組織能力建設(shè)培訓(xùn)
- 立項(xiàng)報(bào)告蓋章要求
- 2022年睪丸腫瘤診斷治療指南
- 被執(zhí)行人給法院執(zhí)行局寫申請范本
評論
0/150
提交評論