用VC開發基于Oracle的數據庫應用
2024-08-29 13:35:34
供稿:網友
 
             
  Oracle 數據庫以其支持大數據量、多用戶的高性能事務處理和完整的安全和完整性控制,支持分布式數據庫和分布處理,具有可移植性、可兼容性、可連接性等優點備受用戶喜愛,而在客戶端的開發工具方面,Visual C++ 也因其強大的功能、高度的靈活性等特點深受廣大程序員的喜愛,                                                                                            本文將分別介紹使用Visual C++ 開發基于Oracle 數據庫應用程序的兩種方法。 
集成VC和PRO*C 
PRO系列是Oracle公司提供的在第三代高級程序設計語言中嵌入SQL語句來訪問數據庫的一套預編譯程序,包括PRO*Ada、PRO*C、PRO*COBOL、PRO*Fortran、PRO*Pascal 和PRO*PL/I 六種。程序員用相應的高級語言編寫嵌入SQL語句的PRO源程序(若用C 語言則稱為PRO*C源程序)后運行相應的預編譯程序,把嵌入的SQL語句轉換為標準的Oracle調用并生成目標源程序,即純高級語言格式的源程序,此后就可以將這些源程序加入用戶的程序中調用。 
通過預編譯程序與其他高級語言的結合,既可以利用SQL強有力的功能和靈活性為數據庫應用系統的開發提供強有力的手段,又可以充分利用高級語言自身在系統開發方面的優勢,從而提供一個完備的基于Oracle數據庫應用程序的開發解決方案。 
一個PRO*C源文件一般由程序頭和程序體兩部分組成。程序頭包含宿主變量(SQL語句中所包含的變量)說明、通信區定義和C外部表示符的說明等。程序體一般是由若干函數構成。 
在VC中使用PRO*C時,先用PRO*C編寫所需的操作數據庫的子程序,再運行PRO*C預編譯程序把PRO*C源程序轉換成相應的CPP源程序,將該程序插入到用戶工程文件中,并在需要對插入函數進行調用的模塊中說明函數,然后就可以在此模塊中調用所需的函數了。 
通過ODBC訪問數據庫 
ODBC(Open Database Connectivity,開放數據庫互連)是由Microsoft公司于1991年提出的一個用于訪問數據庫的統一界面標準,是應用程序和數據庫系統之間的中間件。它通過使用相應應用平臺上和所需數據庫對應的驅動程序與應用程序的交互來實現對數據庫的操作,避免了在應用程序中直接調用與數據庫相關的操作,從而提供了應用程序的獨立性。 
Visual C++中提供了CDatabase、CRecordset、CRecordView、CDBException和CFieldExchange 五個類,這些類封裝了ODBC SDK函數,從而使用戶可以無需了解SDK函數的具體結構就可以很方便地操作支持ODBC的數據庫。這五個類的主要作用如下: 
CDatabase類: 封裝了與數據庫建立連接,控制事務的提交和回滾及執行SQL語句的方法。 
CRecordset類:封裝了大部分操縱數據庫的方法,包括瀏覽、修改記錄、控制游標移動、排序等操作。 
CRecordView類: 提供了與recordset對象相連接的視,可以建立視中的控件與數據庫數據的對應,同時支持移動游標、修改記錄等操作。 
CDBException類: 提供了對數據庫操作的異常處理,可以獲得操作異常的相關返回代碼。 
CFieldExchange類: 提供了用戶變量與數據庫字段之間的數據交換,假如不需要使用自定義類型,程序員將不用直接調用該類的函數,MFC Wizard將自動為程序員建立連接。 
兩種方法的比較 
前面所述的這兩種方法在Visual C++中都可以很方便地開發出基于Oracle數據庫的應用程序,同時,這兩種方法又各有其優缺點。ODBC由于有MFC 強大的類庫支持而使得編程實現非常方便,同時可移植性也很好,在異構的數據庫之間移植也只需更改很少的一部分代碼,但是,從ODBC的實現機制可以看出,與PRO*C相比,應用程序需要經過ODBC驅動程序治理器和ODBC驅動程序兩層才能和數據庫通信接口建立聯系,而PRO*C是直接與通信接口聯系,因此建立在ODBC上的應用程序的執行效率相對低一些。PRO*C具有執行效率高,支持嵌入式PL/SQL塊等Oracle自身特有的優點,但正因為有了這些優點,使得用PRO*C開發出的應用程序無法向異構數據庫平臺移植。作為程序員,在實際開發中可以依據實際情況選擇最合適的開發方法。