VisualC++中連接Oracle數(shù)據庫的幾種方法_第1頁
VisualC++中連接Oracle數(shù)據庫的幾種方法_第2頁
VisualC++中連接Oracle數(shù)據庫的幾種方法_第3頁
VisualC++中連接Oracle數(shù)據庫的幾種方法_第4頁
VisualC++中連接Oracle數(shù)據庫的幾種方法_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、VisualVisual C+C+中連接OracleOracle數(shù)據庫的幾種方法周計成,章立,劉曉林78179部隊,成都610000Fars整理摘要介紹了Visual C+平臺下連接Oracle數(shù)據庫的幾種主要方法,同時給出了具體 的使用步驟和例如。對這幾種方法的特點進行了分析,比擬了它們的優(yōu)點和應用 范圍。關鍵詞:Visual C+; Oracle數(shù)據庫開發(fā);ADO; OCI;Pro*C目錄摘要.II第一講引言.1第二講VCVC連接OracleOracle數(shù)據庫的方法 .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ù)據庫.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ù)據訪問應用程序接口特性 .53.23.2技術特性比擬 .53.33.3性能特性.5參考文獻 .6ReadRead

3、MeMe.7Fars PDF 整理 2021.7.251第一講引言Oracle數(shù)據庫是一種廣泛使用的數(shù)據庫系統(tǒng),它的功能強大,具有良好的性能和較高的平安保密性,提供了與高級語言配合的專用接口,可以使用主流的開發(fā) 工具快速開發(fā),同時支持C/S和B/S工作模式,因而被大量用到信息系統(tǒng)的開發(fā)1Microsoft提供了許多相關組件支持數(shù)據庫的訪問,Oracle公司也提供了Oracle數(shù)據庫應用程序的開發(fā)接口。在Visual C+下連接Oracle庫主要有3種方法。一 種方法是利用Visual C+提供的多種數(shù)據庫訪問技術, 如ActiveX數(shù)據對象ADO、 開放數(shù)據庫連接ODBC、數(shù)據存取對象DAO、

4、對象連接和嵌入數(shù)據庫OLE DB等。另一種方法是在Visual C+中嵌入SQL語句,文中指Pro*C/C+簡稱PROC。第三種方法是使用Oracle公司提供的底層接口開發(fā)工具OCI。Fars PDF 整理 2021.7.252第二講VCVC連接OracleOracle數(shù)據庫的方法2.12.1 ADOADO連接OracleOracle用ADO連接數(shù)據庫的一般步驟如下:(1)用#import指令引入ADO類型庫在stdafx.h中參加如下語句:#import c:program filescommon filessystemadomsado15.dll no_namespace rename (

5、EOF , adoEOF)它的作用是編譯的時候系統(tǒng)會生成msado15.tlh和ado15. tli兩個C+頭文件來定義ADO庫。在具體的開發(fā)環(huán)境中msado15.dll不一定在這個目錄下,可按實際情況修改該文件的路徑。(2)初始化OLE/COM庫環(huán)境ADO庫是一組COM動態(tài)庫,應用程序在調用ADO前,必須初始化OLE/COM庫環(huán)境。在MFC應用程序里,可以在應用程序主類的InitInstance成 員函數(shù)里初始化OLE/COM庫環(huán)境。(3)在VC+中用ADO連接oracle的例如ADO庫包含3個根本接 口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPt

6、r接口。與數(shù)據庫的連接就是用_ConnectionPtr接口,它的連接字符 用可以是自己直接寫,也可以指向一個ODBC DSN。在本例中用戶名和密碼都是test數(shù)據庫名是myoracle。下面是例如代碼:_ConnectionPtrm_pConnection;_RecordsetPtr m_pRecordset;/拓始化COM,創(chuàng)立ADO連接AfxOleInit ();m_pConnection.CreateInstance (_uuidof (Connection);try /建立數(shù)據庫連接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儆據庫連接失??!rn錯誤信息:s , e.ErrorMessage ();AfxMessageBox (errormessage);2.22.2 OCIOCI連接OracleOracleO

8、racle專門為C+提供了連接的接口OCI,它是Oracle公司提供的開發(fā)基于Oracle數(shù)據庫應用程序的底層接口,全面支持Oracle的面向對象技術,具有速度快、支持第三代編程語言、對Oracle數(shù)據庫的控制功能強等優(yōu)點。OCI接口支持WindowsFars PDF 整理 2021.7.253系列操作系統(tǒng),它所支持的C語言編譯器包括Borland C+和Microsoft Visual C+等。在使用OCI開發(fā)Oracle數(shù)據庫應用程序之前,應首先安裝這些操 作系統(tǒng)和C語言編譯工具。通過OCI連接數(shù)據庫的步驟如下代碼所示:(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、分配會話句柄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);/分配錯誤句柄OCIHandleAlloc (envhp, (void*) &errhp, OCI_HTYPE_ERROR,0

11、,0);(3)連接數(shù)據庫在本例中m_strDBName為數(shù)據庫名,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公司提供的在第三代高級程序設計語言中嵌入SQL語句來訪問數(shù)據庫的一套預編譯程序。利用Oracle公司提供的工具生成高級語言格式的源程序,然后就可以將這些源程序參加用戶的程序中,開發(fā)出滿足各種復雜要求的 優(yōu)化應用程序,具有較高的執(zhí)行效率。Fars PDF 整理 2021.7.254PROC在VC下開發(fā)Oracle庫接口時,需要用到如下文件:(1)PROC的可執(zhí)行文件PROCUI. EXE用Oracle_HOME代表Oracle安裝后的根目錄, 當其以缺省方式安裝在計算 機的D盤時,那么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預編譯器來預編譯應用 程序,然后進行編譯和鏈接,最終

15、生成可執(zhí)行程序。下面是PROC在Visual C+環(huán)境下連接Oracle數(shù)據庫的方法。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因為是通用技術,開發(fā)起來比擬容易,通用技術的速 度太慢,如果我們要開發(fā)管理海量數(shù)據的數(shù)據庫,比方影像數(shù)據庫就無法勝任。OCI是一種底層接口,開發(fā)起來難度大一些,但是它的速度極快,幾乎可以操縱Oracle數(shù)據庫的任何對象。使用PROC進行數(shù)據庫開發(fā)效率高,但要求對Oracle數(shù)據庫的運行機制十

18、分了解。3.13.1數(shù)據訪問應用程序接口特性OCI在開放性、可視化、Oracle的連接能力方面比擬好,但只適用于OracleFars PDF 整理 2021.7.255數(shù)據庫。ADO方法由于有MFC強大的類庫支持,熟悉VC編程時那么實現(xiàn)方便, 且可移植性強。PROC支持嵌入PL/SQL塊直接調用Oracle庫,將過程化語言和 非過程化語言相結合,適合熟悉Oracle數(shù)據庫本身的技術人員使用。3.23.2技術特性比擬OCI和ADO在編程上采用面向對象技術,在和Oracle連接時通過調用Oracle OCI類型庫來實現(xiàn),應用程序在封裝性、繼承性和程序的再利用方面存在優(yōu)勢。而PROC屬結構化編程語言,它直接調用Oracle SQL Lib來實現(xiàn)和數(shù)據庫的連接,但用PROC開發(fā)出的應用程序無法向異構數(shù)據庫平臺移植。3.33.3性能特性PROC運行速度最快,其次是OCI,最后是ADO。因為,ADO與PROC相 比,應用程序需要經過兩層才能和數(shù)據庫通信接口建立聯(lián)系,執(zhí)行效率相對較低。Fars PDF 整理 2021.7.256參考文獻1 Oracle Documentation Library (Release 8).2楊培章,馬東

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論