![VisualC++中連接Oracle數(shù)據(jù)庫的幾種方法_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/23/dcfd4441-3848-415c-b430-fdf163416629/dcfd4441-3848-415c-b430-fdf1634166291.gif)
![VisualC++中連接Oracle數(shù)據(jù)庫的幾種方法_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/23/dcfd4441-3848-415c-b430-fdf163416629/dcfd4441-3848-415c-b430-fdf1634166292.gif)
![VisualC++中連接Oracle數(shù)據(jù)庫的幾種方法_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/23/dcfd4441-3848-415c-b430-fdf163416629/dcfd4441-3848-415c-b430-fdf1634166293.gif)
![VisualC++中連接Oracle數(shù)據(jù)庫的幾種方法_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/23/dcfd4441-3848-415c-b430-fdf163416629/dcfd4441-3848-415c-b430-fdf1634166294.gif)
![VisualC++中連接Oracle數(shù)據(jù)庫的幾種方法_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/23/dcfd4441-3848-415c-b430-fdf163416629/dcfd4441-3848-415c-b430-fdf1634166295.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、VisualVisual C+C+中連接OracleOracle數(shù)據(jù)庫的幾種方法周計(jì)成,章立,劉曉林78179部隊(duì),成都610000Fars整理摘要介紹了Visual C+平臺(tái)下連接Oracle數(shù)據(jù)庫的幾種主要方法,同時(shí)給出了具體 的使用步驟和例如。對(duì)這幾種方法的特點(diǎn)進(jìn)行了分析,比擬了它們的優(yōu)點(diǎn)和應(yīng)用 范圍。關(guān)鍵詞:Visual C+; Oracle數(shù)據(jù)庫開發(fā);ADO; OCI;Pro*C目錄摘要.II第一講引言.1第二講VCVC連接OracleOracle數(shù)據(jù)庫的方法 .22.12.1 ADOADO連接OracleOracle. 2(1)用-mport指令引入ADO類型庫 .2(2)初始化O
2、LE/COM庫環(huán)境 .2(3)在VC+中用ADO連接oracle的例如 .22.22.2 OCIOCI連接OracleOracle.2(1)定義OCI句柄.3(2)分配句柄.3(3)連接數(shù)據(jù)庫.32.32.3 PROCPROC方式連接OracleOracle.4(1) PROC的可執(zhí)行文件PROCUI. EXE.4(2) Oracle支持SQL在VC環(huán)境的庫文件OraSQL8. LIB.4(3) Oracle支持SQL在VC環(huán)境的頭文件 .4第三講連接方法的比擬 .53.13.1數(shù)據(jù)訪問應(yīng)用程序接口特性 .53.23.2技術(shù)特性比擬 .53.33.3性能特性.5參考文獻(xiàn) .6ReadRead
3、MeMe.7Fars PDF 整理 2021.7.251第一講引言O(shè)racle數(shù)據(jù)庫是一種廣泛使用的數(shù)據(jù)庫系統(tǒng),它的功能強(qiáng)大,具有良好的性能和較高的平安保密性,提供了與高級(jí)語言配合的專用接口,可以使用主流的開發(fā) 工具快速開發(fā),同時(shí)支持C/S和B/S工作模式,因而被大量用到信息系統(tǒng)的開發(fā)1Microsoft提供了許多相關(guān)組件支持?jǐn)?shù)據(jù)庫的訪問,Oracle公司也提供了Oracle數(shù)據(jù)庫應(yīng)用程序的開發(fā)接口。在Visual C+下連接Oracle庫主要有3種方法。一 種方法是利用Visual C+提供的多種數(shù)據(jù)庫訪問技術(shù), 如ActiveX數(shù)據(jù)對(duì)象ADO、 開放數(shù)據(jù)庫連接ODBC、數(shù)據(jù)存取對(duì)象DAO、
4、對(duì)象連接和嵌入數(shù)據(jù)庫OLE DB等。另一種方法是在Visual C+中嵌入SQL語句,文中指Pro*C/C+簡稱PROC。第三種方法是使用Oracle公司提供的底層接口開發(fā)工具OCI。Fars PDF 整理 2021.7.252第二講VCVC連接OracleOracle數(shù)據(jù)庫的方法2.12.1 ADOADO連接OracleOracle用ADO連接數(shù)據(jù)庫的一般步驟如下:(1)用#import指令引入ADO類型庫在stdafx.h中參加如下語句:#import c:program filescommon filessystemadomsado15.dll no_namespace rename (
5、EOF , adoEOF)它的作用是編譯的時(shí)候系統(tǒng)會(huì)生成msado15.tlh和ado15. tli兩個(gè)C+頭文件來定義ADO庫。在具體的開發(fā)環(huán)境中msado15.dll不一定在這個(gè)目錄下,可按實(shí)際情況修改該文件的路徑。(2)初始化OLE/COM庫環(huán)境ADO庫是一組COM動(dòng)態(tài)庫,應(yīng)用程序在調(diào)用ADO前,必須初始化OLE/COM庫環(huán)境。在MFC應(yīng)用程序里,可以在應(yīng)用程序主類的InitInstance成 員函數(shù)里初始化OLE/COM庫環(huán)境。(3)在VC+中用ADO連接oracle的例如ADO庫包含3個(gè)根本接 口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPt
6、r接口。與數(shù)據(jù)庫的連接就是用_ConnectionPtr接口,它的連接字符 用可以是自己直接寫,也可以指向一個(gè)ODBC DSN。在本例中用戶名和密碼都是test數(shù)據(jù)庫名是myoracle。下面是例如代碼:_ConnectionPtrm_pConnection;_RecordsetPtr m_pRecordset;/拓始化COM,創(chuàng)立ADO連接AfxOleInit ();m_pConnection.CreateInstance (_uuidof (Connection);try /建立數(shù)據(jù)庫連接m_pConnection.CreateInstance (_uuidof (Connection);
7、m_pConnection -Open ( Provider =OraOLEDB.Oracle.1;Password= test;User ID= test;Data Source=myoracle;Persist Security Info=True , ,adModeUnknown);catch (_com_error e).CString errormessage;errormessage.Format儆據(jù)庫連接失敗!rn錯(cuò)誤信息:s , e.ErrorMessage ();AfxMessageBox (errormessage);2.22.2 OCIOCI連接OracleOracleO
8、racle專門為C+提供了連接的接口OCI,它是Oracle公司提供的開發(fā)基于Oracle數(shù)據(jù)庫應(yīng)用程序的底層接口,全面支持Oracle的面向?qū)ο蠹夹g(shù),具有速度快、支持第三代編程語言、對(duì)Oracle數(shù)據(jù)庫的控制功能強(qiáng)等優(yōu)點(diǎn)。OCI接口支持WindowsFars PDF 整理 2021.7.253系列操作系統(tǒng),它所支持的C語言編譯器包括Borland C+和Microsoft Visual C+等。在使用OCI開發(fā)Oracle數(shù)據(jù)庫應(yīng)用程序之前,應(yīng)首先安裝這些操 作系統(tǒng)和C語言編譯工具。通過OCI連接數(shù)據(jù)庫的步驟如下代碼所示:(1)定義OCI句柄public:OCIEnv *envhp;OCIS
9、erver *srvhp;OCISvcCtx *svchp;OCIError *errhp;OCISession *authp;OCIStmt *stmthp;OCIDescribe *dschp;(2)分配句柄OCIEnvInit (&envhp,OCI_DEFAULT,0,0) 初始化環(huán)境變量:/分配效勞句柄OCIHandleAlloc ( envhp, ( void*) &srvhp,OCI_HTYPE_SERVER,0,0);/分配環(huán)境句柄OCIHandleAlloc (envhp, (void*) &svchp, OCI_HTYPE_SVCCTX,0,0);/
10、分配會(huì)話句柄OCIHandleAlloc (envhp, (void*) &authp, OCI_HTYPE_SESSION,0,0);/分配描述句柄OCIHandleAlloc (dvoid*)envhp, (dvoid*)&dschp, OCI_HTYPE_DESCRIBE,0,0);/分配語句句柄OCIHandleAlloc (dvoid*) envhp, (dvoid*) &stmthp, OCI_HTYPE_STMT,0,0);/分配錯(cuò)誤句柄OCIHandleAlloc (envhp, (void*) &errhp, OCI_HTYPE_ERROR,0
11、,0);(3)連接數(shù)據(jù)庫在本例中m_strDBName為數(shù)據(jù)庫名,m_strDBName為用戶名,m_strPWD為 用戶密碼。status =OCIServerAttach ( srvhp,errhp, ( unsigned char*) (LPCTSTR) m_strDBName, (sb4)strlen (m_strDBName) , OCI_DEFAULT);ErrorPro (errhp,OCIAttrSet (authp,OCI_HTYPE_SESSION, (void*) (LPCTSTR) m_strDBName,( ub4) strlen ( m_strUserName),
12、OCI_ATTR_USERNAME, errhp);ErrorPro (errhp,OCIAttrSet (authp,OCI_HTYPE_SESSION, ( void*) ( LPCTSTR) m_strPWD,( ub4) strlen ( m_strP WD), OCI_ATTR_PASSWORD,errhp);status=OCISessionBegin (svchp,errhp,authp,OCI_CRED_RDBMS,OCI_DEFAULT); if (status! =0)return;else AfxMessageBox(成功地連接到了效勞器);2.32.3 PROCPROC
13、方式連接OracleOraclePROC是Oracle公司提供的在第三代高級(jí)程序設(shè)計(jì)語言中嵌入SQL語句來訪問數(shù)據(jù)庫的一套預(yù)編譯程序。利用Oracle公司提供的工具生成高級(jí)語言格式的源程序,然后就可以將這些源程序參加用戶的程序中,開發(fā)出滿足各種復(fù)雜要求的 優(yōu)化應(yīng)用程序,具有較高的執(zhí)行效率。Fars PDF 整理 2021.7.254PROC在VC下開發(fā)Oracle庫接口時(shí),需要用到如下文件:(1)PROC的可執(zhí)行文件PROCUI. EXE用Oracle_HOME代表Oracle安裝后的根目錄, 當(dāng)其以缺省方式安裝在計(jì)算 機(jī)的D盤時(shí),那么Oracle_HOME位置是D: Oracle。PROC的
14、可執(zhí)行文件在Oracle_HOME Ora81 BIN PROCUI.EXE。(2)Oracle支持SQL在VC環(huán)境的庫文件OraSQL8. LIBOraSQL8. LIB文件在Oracle_HOME Ora81 PRECOMP LIB MSVC OraSQL8.LIB。(3)Oracle支持SQL在VC環(huán)境的頭文件頭文件*.h在Oracle_HOME Ora81 PRECOMP PUBLIC *h。為了方便完成用PROC在VC下開發(fā)Oracle庫接口,通常將PROC集成到Visual C+ 6.0環(huán)境中,直接在C / C+環(huán)境中使用PROC預(yù)編譯器來預(yù)編譯應(yīng)用 程序,然后進(jìn)行編譯和鏈接,最終
15、生成可執(zhí)行程序。下面是PROC在Visual C+環(huán)境下連接Oracle數(shù)據(jù)庫的方法。void connect ()EXEC SQL BEGIN DECLARE SECTION;struct unsigned short len; unsigned char arr 20 ; username;struct unsigned short len; unsigned char arr 10 ; password;struct unsigned short len; unsigned char arr 10 ; server;EXEC SQL END DECLARE SECTION;printf
16、( n輸入用戶名:);gets (username.arr);username.len = ( unsigned short) strlen ( ( char *) username.arr);printf ( n輸入口 令:);gets (password.arr);password.len = ( unsigned short) strlen ( ( char *) password.arr);printf ( n輸入效勞器名:);gets (server.arr);server.len= (unsigned short) strlen (char *) server.arr);/連接到O
17、racle效勞器上EXEC SQL CONNECT :username IDENTIFIED BY : password USING :server;printf ( n用戶 $成功地連接到了效勞器s上!n , username.arr, server.arr); 第三講連接方法的比擬比擬這3種方式,ADO因?yàn)槭峭ㄓ眉夹g(shù),開發(fā)起來比擬容易,通用技術(shù)的速 度太慢,如果我們要開發(fā)管理海量數(shù)據(jù)的數(shù)據(jù)庫,比方影像數(shù)據(jù)庫就無法勝任。OCI是一種底層接口,開發(fā)起來難度大一些,但是它的速度極快,幾乎可以操縱Oracle數(shù)據(jù)庫的任何對(duì)象。使用PROC進(jìn)行數(shù)據(jù)庫開發(fā)效率高,但要求對(duì)Oracle數(shù)據(jù)庫的運(yùn)行機(jī)制十
18、分了解。3.13.1數(shù)據(jù)訪問應(yīng)用程序接口特性O(shè)CI在開放性、可視化、Oracle的連接能力方面比擬好,但只適用于OracleFars PDF 整理 2021.7.255數(shù)據(jù)庫。ADO方法由于有MFC強(qiáng)大的類庫支持,熟悉VC編程時(shí)那么實(shí)現(xiàn)方便, 且可移植性強(qiáng)。PROC支持嵌入PL/SQL塊直接調(diào)用Oracle庫,將過程化語言和 非過程化語言相結(jié)合,適合熟悉Oracle數(shù)據(jù)庫本身的技術(shù)人員使用。3.23.2技術(shù)特性比擬OCI和ADO在編程上采用面向?qū)ο蠹夹g(shù),在和Oracle連接時(shí)通過調(diào)用Oracle OCI類型庫來實(shí)現(xiàn),應(yīng)用程序在封裝性、繼承性和程序的再利用方面存在優(yōu)勢(shì)。而PROC屬結(jié)構(gòu)化編程語言,它直接調(diào)用Oracle SQL Lib來實(shí)現(xiàn)和數(shù)據(jù)庫的連接,但用PROC開發(fā)出的應(yīng)用程序無法向異構(gòu)數(shù)據(jù)庫平臺(tái)移植。3.33.3性能特性PROC運(yùn)行速度最快,其次是OCI,最后是ADO。因?yàn)椋珹DO與PROC相 比,應(yīng)用程序需要經(jīng)過兩層才能和數(shù)據(jù)庫通信接口建立聯(lián)系,執(zhí)行效率相對(duì)較低。Fars PDF 整理 2021.7.256參考文獻(xiàn)1 Oracle Documentation Library (Release 8).2楊培章,馬東
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 衡陽2025年湖南衡陽市中心醫(yī)院高層次和急需緊缺專業(yè)技術(shù)人才引進(jìn)60人筆試歷年參考題庫附帶答案詳解
- 漯河2024年河南漯河市教育局所屬事業(yè)單位人才引進(jìn)筆試歷年參考題庫附帶答案詳解
- 深圳2025年廣東深圳博物館勞務(wù)派遣工作人員招聘6人筆試歷年參考題庫附帶答案詳解
- 2025屆湘豫名校聯(lián)考高三上學(xué)期一輪復(fù)習(xí)質(zhì)量檢測物理試卷
- 2025年中國制證系統(tǒng)市場調(diào)查研究報(bào)告
- 2025至2031年中國高速曬圖機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年花色電腦威爾頓羊毛地毯項(xiàng)目可行性研究報(bào)告
- 2025年紙制包裝品項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國石墨-鐵基粉末冶金制品行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國煙堿原液行業(yè)投資前景及策略咨詢研究報(bào)告
- 酒店長包房租賃協(xié)議書范本
- 2 找春天 公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 2025年江蘇護(hù)理職業(yè)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 2025年江蘇南京水務(wù)集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 【道法】開學(xué)第一課 課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊(cè)
- 建筑工程施工安全管理課件
- 2025年春新外研版(三起)英語三年級(jí)下冊(cè)課件 Unit2第1課時(shí)Startup
- 人教版(2024)英語七年級(jí)上冊(cè)單詞表
- 2024年江西電力職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 【真題】2023年常州市中考道德與法治試卷(含答案解析)
- 超星爾雅學(xué)習(xí)通《大學(xué)生心理健康教育(蘭州大學(xué)版)》章節(jié)測試含答案
評(píng)論
0/150
提交評(píng)論