資料庫編程

隨著資料庫技術的廣泛套用,開發各種資料庫應用程式已成為計算機套用的一個重要方面。VB具有強大的資料庫操作功能,提供了數據管理器(Data Manager)、數據控制項(DataControl)和ADO(Active Data Object)數據對象等工具,使編程人員可以輕鬆地開發出各種資料庫應用程式。當前各種主流資料庫有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等。資料庫編程是對資料庫的創建、讀寫等一列的操作。資料庫編程分為資料庫客戶端編程與資料庫伺服器端編程。資料庫客戶端編程主要使用ODBC API、ADO、ADO.NET、OCI、OTL等方法;資料庫服務端編程主要使用OLE DB等方法。資料庫編程需要掌握一些訪問資料庫技術方法,還需要注意怎么設計高效的資料庫、資料庫管理與運行的最佳化、資料庫語句的最佳化。

基本介紹

  • 中文名:資料庫編程
  • 外文名:Database Programming
  • 套用領域:資料庫、計算機等
  • 主流資料庫Oracle, MS SQL Server等
  • 客戶端編程:ODBC API、ADO等
  • 資料庫類型:網狀資料庫層次資料庫關係資料庫
資料庫的基本概念,訪問資料庫技術方法,VC資料庫編程幾種方法,ODBC連線,MFC ODBC連線,DAO連線,OLE DB連線,OLE DB Templates連線,ADO連線,ADO.NET,

資料庫的基本概念

資料庫按其結構可分為三種類型:網狀資料庫、層次資料庫和關係資料庫。其中關係資料庫是一種套用最廣泛的資料庫。

訪問資料庫技術方法

資料庫編程分為資料庫客戶端編程與資料庫伺服器端編程。資料庫客戶端編程主要使用ODBC API、ADO、ADO.net、OCI、OTL等方法;資料庫服務端編程主要使用OLE DB等方法。
1、幾種是資料庫訪問方法比較
ODBCAPI是一種適合資料庫底層開發的編程方法,ODBCAPI提供大量對數據源的操作,ODBCAPI能夠靈活地操作游標,支持各種幫定選項,在所有ODBC相關編程中,API編程具有最高的執行速度。
DAO提供了很好的資料庫編程的對象模型.但是,對資料庫的所有調用以及輸出的數據都必須通過Access/Jet資料庫引擎,這對於使用資料庫應用程式,是嚴重的瓶頸。
OLEDB提供了COM接口,與傳統的資料庫接口相比,有更好的健壯性和靈活性,具有很強的錯誤處理能力,能夠同非關係數據源進行通信。
ADO最主要的優點在於易於使用、速度快、記憶體支出少和磁碟遺蹟小。
ADO.Net是利用數據集的概念將資料庫數據讀入記憶體中,然後在記憶體中對數據進行操作,最後將數據集數據回寫到源資料庫中。
OTL 是oracle, Odbc and DB2-CLI Template Library 的縮寫,是一個C++編譯中操控關係資料庫的模板庫, OTL中直接操作Oracle主要是通過Oracle提供的OCI接口進行,進行操作DB2資料庫則是通過CLI接口來進行,至於MS的資料庫和其它一些資料庫,則OTL只提供了ODBC來操作的方式。當然Oracle和DB2也可以由OTL間接使用ODBC的方式來進行操縱。具有以下優點:跨平台;運行效率高,與C語言直接調用API相當;開發效率高,起碼比ADO.net使用起來更簡單,更簡潔;部署容易,不需要ADO組件,不需要.net framework等。

VC資料庫編程幾種方法

VC資料庫編程幾種方法,包括ODBC連線、MFC ODBC連線、DAO連線、OLEDB、OLE DB Templates連線、ADO、Oracle專用方法(OCI(OracleCallInterface)訪問、OracleObjectOLEC++ClassLibrary )。

ODBC連線


ODBC(Open DataBase Connectivity)是MSOA的一部分,是一個標準資料庫接口。它提供對關係資料庫訪問的統一接口,實現對異構數據源的一致訪問。
ODBC數據訪問由以下部分組成:
<1>句柄(Handles):ODBC使用句柄來標識ODBC環境、連線、語句和描述器.
<2>快取區(Buffers):
<3>數據類型(Data types)
<4>一致性級別(Conformance levels)
用ODBC設計客戶端的一般步驟:
<1>分配ODBC環境
<2>分配連線句柄
<3>連線數據源
<4>構造和執行SQL語句
<5>獲得查詢結果
<6>斷開數據源的連線
<7>釋放ODBC環境
ODBC API是一種適合資料庫底層開發的編程方法,ODBC API提供大量對數據源的操作,ODBC API能夠靈活地操作游標,支持各種幫定選項,在所有ODBC相關編程中,API編程具有最高的執行速度.因此,ODBC API編程屬於底層編程。

MFC ODBC連線


MFC ODBC是MFCODBC進行的封裝,以簡化對ODBC API的 調用,從而實現面向對象的資料庫編程接口.
MFC ODBC的封裝主要開發了CDatabase類和CRecordSet類
(1) CDatabase
CDatabase類用於應用程式建立同數據源的連線。CDatabase類中包含一個m_hdbc變數,它代表了數據源的連線句柄。如果要建立CDatabase類的實例,應先調用該類的構造函式,再調用Open函式,通過調用,初始化環境變數,並執行與數據源的連線。在通過Close函式關閉數據源。
CDatabase類提供了對資料庫進行操作的函式及事務操作。
(2) CRecordSet
CRecordSet類定義了從資料庫接收或者傳送數據到資料庫的成員變數,以實現對數據集的數據操作。
CRecordSet類的成員變數m_hstmt代表了定義該記錄集的SQL語句句柄,m_nFields為記錄集中欄位的個數,m_nParams為記錄集所使用的參數個數。
CRecordSet的記錄集通過CDatabase實例的指針實現同數據源的連線,即CRecordSet的成員變數m_pDatabase.
MFC ODBC編程更適合於界面型資料庫應用程式的開發,但由於CDatabase類和CRecordSet類提供的資料庫操作函式有限,支持的游標類型也有限,限制了高效的資料庫開發。在編程層次上屬於高級編程。

DAO連線


DAO(Data Access Object)是一組Microsoft Access/Jet資料庫引擎的COM自動化接口.DAO直接與Access/Jet資料庫通信.通過Jet資料庫引擎,DAO也可以同其他資料庫進行通信。DAO還封裝了Access資料庫的結構單元,通過DAO可以直接修改Access資料庫的結構,而不必使用SQL的數據定義語言(DDL)。
DAO的體系結構如下:
DAO封裝的類:
(1)CdaoWorkspace:對DAO工作區(資料庫處理事務管理器)的封裝
(2)CdaoDatabase:對DAO資料庫對象的封裝,負責資料庫連線.
(3)CdaoRecordset:對DAO記錄集對象的封裝,代表所選的一組記錄.
(4)CdaoTableDef:對表定義對象的封裝,代表基本表或附加表定義.
(5)CdaoQueryDef:對查詢對象的封裝,包含所有查詢的定義.
(6)CdaoException:DAO用於接收資料庫操作異常的類.
(7)CDaoFieldExchange
DAO提供了很好的資料庫編程的對象模型.但是,對資料庫的所有調用以及輸出的數據都必須通過Access/Jet資料庫引擎,這對於使用資料庫應用程式,是嚴重的瓶頸。
DAO相對於ODBC來說,屬於高層的資料庫接口.

OLE DB連線


OLE DB對ODBC進行了兩方面的擴展:一是提供了資料庫編程的OLE接口即COM,二是提供了一個可用於關係型和非關係型數據源的接口。
OLE DB提供了COM接口,與傳統的資料庫接口相比,有更好的健壯性和靈活性,具有很強的錯誤處理能力,能夠同非關係數據源進行通信。
與ODBC API一樣,OLE DB也屬於底層的資料庫編程接口,OLE DB結合了ODBC對關係資料庫的操作功能,並進行擴展,可以訪問非關係資料庫。
OLE DB訪問資料庫的原理如下:
OLE DB程式結構:
OLE DB由客戶(Consumer)和伺服器(Provider)。客戶是使用數據的應用程式,它通過OLE DB接口對數據提供者的數據進行訪問和控制。OLE DB伺服器是提供OLE DB接口的軟體組件。根據提供的內容可以分為數據提供程式(Data Provider)和服務提供程式(Service Provider)。
程式結構原理圖如下:
<1> 數據提供程式
數據提供程式擁有自己的數據並把數據以表格的形式呈現給使用者使用.
<2> 服務提供程式
服務提供程式是數據提供程式和使用者的結合。它是OLE DB體系結構中的中間件,它是OLE DB數據源的使用者和數據使用程式的提供者
<3> 數據使用程式
數據使用程式對存儲在數據提供程式中的數據進行使用和控制.
OLE DB開發程式的一般步驟:
<1> 初始化COM環境
<2> 連線數據源
<3> 打開對話
<4> 執行命令
<5> 處理結果
<6> 清除對象

OLE DB Templates連線


使用OLE DB接口編程屬於最低可能層,代碼冗長並且很難維護。因此MS Visual Studio對OLE DB進一步抽象和封裝,提供COM OLE DB Templates這個可行的中間層,從而簡化了OLE DB應用程式的編寫。
OLE DB Templates編寫客戶資料庫程式方法:
<1>以MFC AppWizard為嚮導建立應用程式框架,添加OLE DB支持的頭檔案,然後使用OLE DB類進行資料庫套用開發。
<2>以ATL COM AppWizard為嚮導建立應用程式框架,該框架直接支持OLE DB模板類。
OLE DB Templates包括:Consumer Templates和Provider Templates。
(1) Consumer Templates使用者模板
使用者模板(Consumer Templates)體系結構:

(2) Provider Templates伺服器模板
伺服器模板類體系結構:

ADO連線

在VB中,用戶可以使用3種數據訪問接口,即ActiveX數據對象(ADO)、數據訪問對象(DAO)和遠程數據對象(RDO),其中ADO屬於最新的技術,它代表了Microsoft公司未來的數據訪問策略,也是最簡單、最靈活的數據訪問接口。
與Data控制項相比,ADO控制項的功能更強,而且能夠連線任何符合OLEDB(一種數據訪問的技術標準)規範的數據源,數據源可以是本地的或遠程的各種資料庫,也可以是電子郵件數據、Web上的文本或圖形等。
ADO(ActiveX Data Object,ActiveX數據對象)是MS為最新和最強大的數據訪問接口OLE DB而設計,是一個便於使用的應用程式層接口。ADO是一種面向對象的、與語言無關的(Language_Neutral)數據訪問套用編程接口。它對OLE DB API進行封裝,實現對數據的高層訪問,同時它也提供了多語言的訪問技術,此外,由於ADO提供了訪問自動化接口,它也支持腳本語言。
ADO最主要的優點在於易於使用、速度快、記憶體支出少和磁碟遺蹟小。ADO是用來訪問OLE DB的資料庫技術。在模型層次上它基於OLE DB,但在套用上又高於OLE DB,因此它簡化了對對象模型的操作,並且不依賴於對象之間的相互層次關係。但是OLE的接口可以數據提供程式、服務提供程式和數據使用程式使用,而ADO所提供的對象只能被數據應用程式使用。並且,ADO對象使用了OLE DB服務提供程式和OLE DB數據提供程式所提供的接口和服務。
(1)ADO訪問資料庫的結構原理圖:
(2)ADO對象模型:
ADO對象模型包括以下關鍵對象:
<1>Connection對象:在資料庫套用里運算元據源都通過該對象,這是數據交換的環境,代表與數據源的一個會話。
<2>Command對象:是一個對數據源執行命令的定義。
<3>Parameter對象:用於制定參數化查詢或者存儲過程的參數。
<4>Recordset對象:是執行結果集存儲到本地的ADO對象。
<5>Field對象:ADO中對列進行操作的對象。
<6>Error對象:對ADO數據操作時發生錯誤的詳細描述。
<7>Property對象:代表一個由提供者定義的ADO對象的動態特徵。
ADO對象編程模型:
Parameters
Collection
Execute
Source
Error Collection
(Optional) Active Fields
Connection Collection

(3)ADO編程一般步驟:
<1>創建一個Connection對象。
<2>打開數據源,建立同數據源的連線。
<3>執行一個SQL命令。
<4>使用結果集。
<5>終止連線。
(4)ADO的資料庫訪問規範
引入ADO支持
#import Program Files/Common Files/System/ado/msado*.dll
初始化和釋放ADO環境:
CoInitialize(NULL);
CoUninitialize();

ADO.NET

ADO.NET是一組用於和數據源進行互動的面向對象類庫。
ADO.NET的主要對象有哪些?
Connection :用於連線到資料庫和管理對資料庫的事務;
Command :用於對資料庫發出SQL命令;
DataReader :用於從數據源讀取只進數據記錄流;
DataSet :用於對單層數據、XML數據和關係數據進行存儲、遠程處理和編程;
DataAdapter :用於將數據推入DataSet,並使數據與資料庫保持一致;

相關詞條

熱門詞條

聯絡我們