對Oracle數(shù)據(jù)庫編程的總結(jié)
本文是對Oracle數(shù)據(jù)庫編程的總結(jié) ,現(xiàn)在有很多的常用的數(shù)據(jù)庫,其中包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等。
數(shù)據(jù)庫編程是對數(shù)據(jù)庫的創(chuàng)建、讀寫等一列的操作。
數(shù)據(jù)庫編程分為數(shù)據(jù)庫客戶端編程與數(shù)據(jù)庫服務(wù)器端編程。數(shù)據(jù)庫客戶端編程主要使用ODBC API、ADO、ADO.NET、OCI、OTL等方法;數(shù)據(jù)庫服務(wù)端編程主要使用OLE DB等方法。Oracle數(shù)據(jù)庫編程需要掌握一些訪問數(shù)據(jù)庫技術(shù)方法,還需要注意怎么設(shè)計(jì)高效的數(shù)據(jù)庫、數(shù)據(jù)庫管理與運(yùn)行的優(yōu)化、數(shù)據(jù)庫語句的優(yōu)化。
一、訪問數(shù)據(jù)庫技術(shù)方法
數(shù)據(jù)庫編程分為數(shù)據(jù)庫客戶端編程與數(shù)據(jù)庫服務(wù)器端編程。數(shù)據(jù)庫客戶端編程主要使用ODBC API、ADO、ADO.NET、OCI、OTL等方法;數(shù)據(jù)庫服務(wù)端編程主要使用OLE DB等方法。
1、幾種是數(shù)據(jù)庫訪問方法比較
ODBC API是一種適合數(shù)據(jù)庫底層開發(fā)的編程方法,ODBC API提供大量對數(shù)據(jù)源的操作,ODBC API能夠靈活地操作游標(biāo),支持各種幫定選項(xiàng),在所有ODBC相關(guān)編程中,API編程具有最高的執(zhí)行速度。
DAO提供了很好的Oracle數(shù)據(jù)庫編程的對象模型.但是,對數(shù)據(jù)庫的所有調(diào)用以及輸出的數(shù)據(jù)都必須通過Access/Jet數(shù)據(jù)庫引擎,這對于使用數(shù)據(jù)庫應(yīng)用程序,是嚴(yán)重的瓶頸。
OLE DB提供了COM接口,與傳統(tǒng)的數(shù)據(jù)庫接口相比,有更好的健壯性和靈活性,具有很強(qiáng)的錯誤處理能力,能夠同非關(guān)系數(shù)據(jù)源進(jìn)行通信。
ADO最主要的優(yōu)點(diǎn)在于易于使用、速度快、內(nèi)存支出少和磁盤遺跡小。
ADO.NET 是利用數(shù)據(jù)集的概念將數(shù)據(jù)庫數(shù)據(jù)讀入內(nèi)存中,然后在內(nèi)存中對數(shù)據(jù)進(jìn)行操作,最后將數(shù)據(jù)集數(shù)據(jù)回寫到源數(shù)據(jù)庫中。
OTL 是 Oracle, Odbc and DB2-CLI Template Library 的縮寫,是一個C++編譯中操控關(guān)系數(shù)據(jù)庫的模板庫, OTL中直接操作Oracle主要是通過Oracle提供的OCI接口進(jìn)行,進(jìn)行操作DB2數(shù)據(jù)庫則是通過CLI接口來進(jìn)行,至于MS的數(shù)據(jù)庫和其它一些數(shù)據(jù)庫,則OTL只提供了ODBC來操作的方式。
當(dāng)然Oracle和DB2也可以由OTL間接使用ODBC的方式來進(jìn)行操縱。具有以下優(yōu)點(diǎn):跨平臺;運(yùn)行效率高,與C語言直接調(diào)用API相當(dāng);開發(fā)效率高,起碼比ADO.net使用起來更簡單,更簡潔;部署容易,不需要ADO組件,不需要.net framework 等。
2、VC數(shù)據(jù)庫編程幾種方法
VC數(shù)據(jù)庫編程幾種方法,包括ODBC連接、MFC ODBC連接、DAO連接、OLE DB、OLE DB Templates連接、ADO、Oracle專用方法(OCI(Oracle Call Interface)訪問、Oracle Object OLE C++ Class Library )。
<1.>通用方法
1. ODBC連接
ODBC(Open DataBase Connectivity)是MSOA的一部分,是一個標(biāo)準(zhǔn)數(shù)據(jù)庫接口。它提供對關(guān)系數(shù)據(jù)庫訪問的統(tǒng)一接口,實(shí)現(xiàn)對異構(gòu)數(shù)據(jù)源的一致訪問。
ODBC數(shù)據(jù)訪問由以下部分組成:
<1>句柄(Handles):ODBC使用句柄來標(biāo)識ODBC環(huán)境、連接、語句和描述器.
<2>緩存區(qū)(Buffers):
<3>數(shù)據(jù)類型(Data types)
<4>一致性級別(Conformance levels)
用ODBC設(shè)計(jì)客戶端的一般步驟:
<1>分配ODBC環(huán)境
<2>分配連接句柄
<3>連接數(shù)據(jù)源
<4>構(gòu)造和執(zhí)行SQL語句
<5>獲得查詢結(jié)果
<6>斷開數(shù)據(jù)源的連接
<7>釋放ODBC環(huán)境
ODBC API是一種適合數(shù)據(jù)庫底層開發(fā)的編程方法,ODBC API提供大量對數(shù)據(jù)源的操作,ODBC API能夠靈活地操作游標(biāo),支持各種幫定選項(xiàng),在所有ODBC相關(guān)編程中,API編程具有最高的執(zhí)行速度.因此,ODBC API編程屬于底層編程。
2. MFC ODBC連接
MFC ODBC是MFC對ODBC進(jìn)行的封裝,以簡化對ODBC API的 調(diào)用,從而實(shí)現(xiàn)面向?qū)ο蟮腛racle數(shù)據(jù)庫編程接口.
MFC ODBC的封裝主要開發(fā)了CDatabase類和CRecordSet類
(1) CDatabase類
CDatabase類用于應(yīng)用程序建立同數(shù)據(jù)源的連接。CDatabase類中包含一個m_hdbc變量,它代表了數(shù)據(jù)源的連接句柄。如果要建立CDatabase類的實(shí)例,應(yīng)先調(diào)用該類的構(gòu)造函數(shù),再調(diào)用Open函數(shù),通過調(diào)用,初始化環(huán)境變量,并執(zhí)行與數(shù)據(jù)源的連接。在通過Close函數(shù)關(guān)閉數(shù)據(jù)源。
CDatabase類提供了對數(shù)據(jù)庫進(jìn)行操作的函數(shù)及事務(wù)操作。
(2) CRecordSet類
CRecordSet類定義了從數(shù)據(jù)庫接收或者發(fā)送數(shù)據(jù)到數(shù)據(jù)庫的成員變量,以實(shí)現(xiàn)對數(shù)據(jù)集的數(shù)據(jù)操作。
CRecordSet類的成員變量m_hstmt代表了定義該記錄集的SQL語句句柄,m_nFields為記錄集中字段的個數(shù),m_nParams為記錄集所使用的參數(shù)個數(shù)。
CRecordSet的記錄集通過CDatabase實(shí)例的指針實(shí)現(xiàn)同數(shù)據(jù)源的連接,即CRecordSet的成員變量m_pDatabase.
MFC ODBC編程更適合于界面型數(shù)據(jù)庫應(yīng)用程序的開發(fā),但由于CDatabase類和CRecordSet類提供的數(shù)據(jù)庫操作函數(shù)有限,支持的游標(biāo)類型也有限,限制了高效的數(shù)據(jù)庫開發(fā)。在編程層次上屬于高級編程。
【編輯推薦】