使用ADO 訪問 SQL Server

ADO對象模型組成

ADO是一組由微軟提供的COM組件基於面向對象思想的編程接口。它建立在COM體系結構之上它的所有接口都是自動化接口因此在C++、VisualBasic、Delphi等支持COM的開發語言中通過接口都可以訪問到ADO。ADO對象模型非常精煉由三個主要對象Connection、Command、Recordset和幾個輔助對象組成。對象間的關係如圖1所示

spacer.gif

圖1

 

 

幾個關鍵對象的作用如下所示

Connection對象

創建與數據庫互動所需的連接Connection對象提供OLE DB數據源和對話對象之間的關聯它通過用戶名稱和口令來處理用戶身份的鑑別並提供事務處理的支持它還提供執行方法從而簡化數據源的連接和數據檢索的進程。任何數據庫的操作行爲都必需在連接基礎底下進行。因此在使用ADO之前首先便需創建一個Connection對象。必需注意的是這個動作不是絕對的ADO本身會在沒有Connection對象的情形之下自行創建所需的連接對象。

通常使用它來創建一個數據連接或執行一條不返回任何結果的SQL語句如一個存儲過程。

 

Command對象

Command對象封裝了數據源可以解釋的命令它針對連接的數據庫進行數據變動該命令可以是SQL命令、存儲過程或底層數據源可以理解的任何內容。將用戶提供的指令傳送到數據庫進行新增、刪除或是修改資料等變動處理。

它提供了一種簡單的方法來執行返回記錄集的存儲過程和SQL語句。

 

Recordset對象

Recordset用於表示從數據源中返回的表格數據它封裝了記錄集合的導航、記錄更新、記錄刪除和新記錄的添加等方法還提供了批量更新記錄的能力。它向連接的數據庫提出取得符合特定條件的數據內容。應用程序從Recoreset對象的身上取得所要查看處理的特定數據內容這數據可能是某個特定數據表的全部或是特定內容或是跨越多個數據所取得關係型數據以二維數組的表格形式作展現。

它對記錄集提供了更多的控制功能如記錄鎖定遊標控制等。

 

以下這些對象是爲完成數據庫訪問而設置的輔助對象他們配合上面幾個關鍵對象來完成具體的訪問工作。

Record對象

Record對象表示記錄集Recordset或者是數據提供者上的一條記錄它提供了對單條記錄的數據字段的操作通過它對數據字段進行讀取、修改。

 

Stream對象

Stream流對象主要用來處理記錄集中的二進制數據流的如文件內容或者圖片對象等。

 

Fields集合和Field對象

Fields集合處理記錄中的各個列。記錄集中返回的每一列在Fields集合中都有一個相關的Field對象。Field對象使得用戶可以訪問列名、列數據類型以及當前記錄中列的實際值等信息。

 

Parameters集合Parameter對象

Command對象包含一個Parameters集合。Parameters集合包含參數化的Command對象的所有參數每個參數信息由Parameter對象表示。

 

Properties集合和Property對象

Connection、Command、Recordset和Field對象都含有Proiperties集合。Properties集合用於保存與這些對象有關的各個Property對象。Property對象表示各個選項設置或其他沒有被對象的固有屬性處理的ADO對象特徵。

 

Errors集合和Error對象

Connection對象包含一個Errors集合。Errors集合包含的Error對象給出了關於數據提供者出錯時的擴展信息。

 

spacer.gif以上爲ADO對象模型的各對象間的概要描述對於各個對象的具體使用方法和使用場合我們將在以後章節中展開講解、並將會給出實際的使用例子。

 

 

代碼例子展示       

數據庫主要是用來做數據的存儲並進行數據添加、訪問、修改操作的。我們就看看如何通過ADO的關鍵對象來完成這些功能。

我們假設要做一個學生信息管理的軟件那麼就需要存儲每個學生的資料我們可以使用Access建立一個學生信息的數據庫”classdat.mdb”並建立測試的表如下

spacer.gif 

 

圖2

 

 

表中輸入如下數據然後我們將演示如何對此數據庫進行訪問操作。

 

圖3

 

 

首先要操作任何數據庫首先要連接數據庫我們通過Connection對象進行該操作。

view plaincopy toclipboardprint?

1. HRESULT hr;  

2. _ConnectionPtr pConnection;   // 連接源  

3.        _bstr_t strConn("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"");  

4.        strConn += _T(“classdat.mdb”); // 此處是指向數據庫文件名  

5.        strConn += "\"";  

6.        hr = pConnection.CreateInstance(_uuidof(Connection));  

7.        pConnection->Open(strConn, """", NULL);  

 

      

以上代碼爲了便於說明去掉了容錯代碼。只爲了突出功能代碼。

通過以上代碼就能與數據庫建立連接並保存在智能指針pConnetion之中。

其他的ADO對象都要通過此對象與數據庫操作。

       然後要獲取數據表的內容需要通過Recordset對象和Connetion對象協作完成。

例如我們需要查看學生表Students裏的學生信息首先要打開表記錄可通過如下代碼完成。

      

view plaincopy toclipboardprint?

1. _RecordsetPtr pRecordset;  

2.        pRecordset.CreateInstance( __uuidof( Recordset ));  

3.        pRecordset->Open(_variant_t("select * from Students"), _variant_t((IDispatch *)pConnection, true), adOpenKeyset, adLockOptimistic, adCmdText);  

 

具體參數現在不解釋只要理解Recordset用於打開記錄集合並表示數據集。然後通過輔助對象獲取記錄集合中的記錄字段內容。如下我們通過CString對象strStudentName來接收字段StudentName的內容。

      

view plaincopy toclipboardprint?

1. CString strStudentName = pRecordset->Fields->GetItem( _variant_t(1L) )->Value;  

 

這樣strStudentName的值將是數據庫中第一條記錄的StudentName字段的內容--”李丹”。其他字段可按同樣的方法得到。

     透過Recordset我們還可以修改數據及刪除數據。例如我們要將數據李丹的名字修改爲李雙可以通過如下代碼實現

      

view plaincopy toclipboardprint?

1. pRecordset->Fields->GetItem( _variant_t(1L) )->Value = _T(“李雙”);  

2.      pRecordset->Update();  

 

     加入要刪除當前數據可直接通過

view plaincopy toclipboardprint?

1. pRecordset->Delete( AffectEnum::adAffectCurrent );  

 

可能同學們看到這裏要問目前只能修改刪除李丹這個同學的資料沒錯如果要瀏覽數據就要了解Recordset的重要的瀏覽功能MoveNext及MovePrev。

要查看前一條記錄可以

view plaincopy toclipboardprint?

1. pRecordset->MovePrevious();  

 

要查看後一條記錄可以

view plaincopy toclipboardprint?

1. pRecordset->MoveNext();  

 

此外還有一個重要的對象是Command對象它同樣是用來處理數據集的。而且提供了更高級的概念提供了更多高級的數據操作功能。將在以後章節進行展開說明。至此同學們應該對ADO對象有了大概瞭解了而且也熟悉了他們的基本用法。

 

ADO特點總結

Ado是Windows系統上訪問數據庫比較成熟的技術之一憑藉其自身的特點自它出現後不久就迅速流行開來。ADO是應用微軟COM 組件編程比較成功的項目這也得益於COM組件的優勢。而且COM是高度面向對象的思想。提供了二進制級別的組件共享機制。這使得ADO具有易於使用、訪問靈活、應用廣泛、數據類型豐富、高效的特點。

首先ADO非常易於使用。

這是ADO技術的最重要的一個特徵是它能夠流行起來的重要原因。由於ADO是高層應用封裝了許多底層工作將底層的繁瑣操作進行封裝並對外提供統一的接口。所以相對於OLE DB或者ODBC來說它具有面向對象的特性。同時在ADO的對象結構中其對象之間的層次關係並不明顯。相對於DAO等訪問技術來講又不必關心對象的構造順序和構造層次。對於要用的對象不必選建立連接、會話等對象只需直接構造即可方便了應用程序的編制。特別是在Visual C++編程中通過對自動化對象進行的封裝對COM組件提供了統一的編程界面只要懂得COM編程的基礎就很容易上手。同時對於腳本語言的支持也在一定程度上降低了使用的門檻。

其次ADO具有ODBC的主要功能而且ADO適用的數據源的範圍要大的多。

ADO技術可以訪問包括關係數據庫和非關係數據庫的所有文件系統。它提供了訪問ODBC的接口所以可以訪問ODBC能夠訪問的所有數據。不僅如此它還可以訪問非關係型的數據庫如文本文件。並對這些不同的數據的訪問提供了統一的接口。這同樣有利於降低程序編寫的難度。使用ADO 將適用於ODBC兼容的數據庫和 OLE DB 兼容的數據源包括 MS SQLSERVER、Access、Oracle、Excel、文本文件等。可以看出ADO所支持的數據庫範圍是非常廣泛的。

還有ADO具備高速訪問數據源的能力。

由於ADO技術基於OLE DB所以它也繼承了OLE DB訪問數據庫的高速性。ADO 通過一個小型的自動化接口建立一個簡單而高效的到達OLE DB的中間層。所以其速度幾乎與OLE DB相差無幾 不過ADO 卻能讓你不需要了解OLE DB的底層繁瑣的COM接口。

其次ADO可以用於MicrosoftActiveX頁

因爲ADO基於COM技術所以可以通過COM接口與其他的COM對象進行交互。它可以作爲ADO控件的形式出現。所以可應用於所有支持ActiveX的語言例如一些腳本語言也可以通過自動化接口與ADO通信從而大大的擴大了ADO的應用範圍也使得基於ADO的程序具有更廣泛的支持度。

此外基於ADO的程序佔用資源較少

由於ADO是基於組件對象模型COM的訪問技術它是一個二進制代碼共享機制本身就是爲了節約資源而設計的。ADO組件被作爲公共組件被所有程序調用。所以用ADO產生的應用程序佔用內存少。通過上一節我們也瞭解了ADO還允許同一Connection實例下有多個Record set實例。

最後ADO允許進行批更新使用的Update Batch方法

ADO的批更新操作可大大減輕網絡負擔提高數據庫處理效率。

通過以上分析我們看到ADO具有許多鮮明的優點。這也是它在產生出來後迅速得到廣泛應用的魅力所在。尤其是通過VC對COM進行訪問時更能凸顯ADO的快速高效、接口簡便的特點。

 

 

 

我們知道程序界有一個著名公式是:程序=數據+算法。這充分說明了數據在程序設計中的重要地位。而當數據規模達到一定程度的時候爲了達到數據的快速存儲和快速訪問就必須使用數據庫Database來進行數據的存儲。因爲數據庫是按照數據結構來組織、存儲和管理數據的倉庫利用數據庫進行存儲具有存儲訪問快速、管理方便、合理組織、減少數據的冗餘度等優勢。

數據庫有很多種類型從最簡單的存儲有各種數據的表格到能夠進行海量數據存儲的大型數據庫系統都在各個方面得到了廣泛的應用。數據庫模型有層次結構模型、網狀結構模型、關係結構模型本篇章主要介紹應用範圍最廣泛的關係型數據庫的訪問技術。

Visual C++數據庫開發的特點

一、              豐富的數據庫訪問技術可供選擇

Visual C++6.0提供了多種多樣的數據庫訪問技術—ODBC API、MFC ODBC、DAO、OLE DB、ADO等。這些技術各有特點用戶可按自己的技術熟練程度及項目特點選擇適合自己的開發技術。

二、              VC提供的可視化嚮導功能簡化開發過程

利用VC提供的AppWizard和ClassWizard用戶可以方便地開發出性能優良的基於MFC的數據庫應用程序。你甚至不需要編寫一句代碼直接通過鼠標點選就能生成一個完整的簡單數據庫應用程序。

三、              強大的IDE編譯器大大提高了開發的效率。

VC的IDE是目前世界上功能最強大的編譯器之一。利用該IDE所提供的各種輔助工具可方便快速的進行程序編寫、編譯、鏈接、調試程序相比一般的編譯器在效率上有明顯提高。

四、              開發方式靈活開發難度適中

Visual C++進行數據庫開發可選擇的開發方式多種多樣。既可進行面向過程的開發也可按面向對象的方式進行開發。既可直接調用匯編的代碼也可以通過DLL動態庫的方式與其它程序語言進行混合編程。豐富的類庫及COM庫爲開發提供了強大的支持。

五、              良好的架構使其具有較好的可擴展性

Visual C++具有面向對象編程的特性。通過抽象性、繼承、重載、多態等特性面向接口編程可使整個數據庫系統具有良好的架構支持良好的擴展性。利用面向接口編程及COM組件編程技術各個部件可進行無縫替換極大的提高了程序的可擴展性及健壯性。

六、              程序執行效率高運行速度快

我們知道C++語言在高級語言裏是屬於與機器語言比較接近的語言所以它的執行效率一般來說僅次於彙編語言。而且在執行效率要求比較高的地方可以直接內嵌彙編這大大提高了程序的執行效率。而且Visual C++更通過代碼優化技術可讓程序的執行效率提高百分之十幾。這是其它高級語言所無法比擬的。

Visual C++數據庫開發技術

如前所述Visual C++爲數據庫開發提供了多種多樣的技術支持。用戶可供選擇的數據庫訪問技術包括ODBCOpen DataBase Connectivity、MFC ODBC(Microsoft Foundation Classes ODBC)、DAO(Data Access Object)、OLE DB(Object Link and EmbeddingDataBase)、ADO(ActiveX Data Object)。這些技術都有各自的特點適用範圍也不盡相同所以用戶一般需要根據技術的特點和項目的特徵進行恰當的選擇。

1、ODBC

優點ODBC是客戶應用程序訪問關係數據庫時提供的一個統一的接口ODBC提供了一套統一的API應對不同的數據庫訪問這樣使應用程序可以只針對ODBC的API來進行程序編寫就可訪問任何提供了ODBC驅動程序的數據庫。此外ODBC還是一種業界標準幾乎所有的關係數據庫都提供了相應的ODBC驅動程序所以具有廣泛的應用。

缺點不過由於ODBC只能用於關係型數據庫使得ODBC很難訪問對象數據庫及其它非關係型數據庫。而且由於ODBC是一個接口層需要爲各種不同的數據庫提供適應性必然會使效率有所降低。此外在使用ODBC時需要向系統註冊一個數據源這增加一定的配置難度。還需要通過大量的ODBC統一接口API來對數據庫訪問也提高了一定的開發難度。

2、MFCODBC

優缺點因爲MFC ODBC只是通過MFC類庫MFC ODBC對ODBC的API進行了一層簡單封裝使API更容易被使用所以它的優缺點就跟ODBC一樣只是降低了一定的開發難度。

3、DAO

優點DAO數據訪問對象是一種應用程序編程接口API它是微軟提供的用於訪問Microsoft Jet數據庫文件(*.mdb)的強有力的數據庫開發工具。DAO是微軟的第一個面向對象的數據庫接口各個DAO對象協同工作。通過Jet函數它還可以訪問其他的結構化查詢語言SQL數據庫。因爲DAO直接內嵌在ACCESS運行環境中DAO是訪問mdb文件有最高效率的數據庫引擎。MFC也提供了一組DAO類封裝了底層的API而且VC嚮導也提供了對DAO的支持從而大大簡化了程序的開發。此外不必在ODBC管理器中註冊DSN。

缺點DAO是基於MicrosoftJet引擎的只能訪問Jet引擎支持的桌面數據庫。所以要訪問SqlServer必須通過ODBC來進行訪問。

4、OLEDB

優點OLE DB是VisualC++開發數據庫應用中提供的新技術。OLE DB對所有的文件系統包括關係數據庫和非關係數據庫都提供了統一的接口。所以使用OLE DB可以對大部分數據庫進行廣泛的支持。同時它是低級應用程序接口所以在效率上比ODBC高。

缺點直接使用OLE DB來設計數據庫應用程序需要大量的代碼。即便可以通過ATL模板來減少一定的工作量其開發難度也是相對較大的。可以說他是所有數據庫編程接口中難度最大的。

5、ADO

優點ADO是一種面向對象的編程接口它向我們提供了一個熟悉的高層的對OLE DB的Automation封裝接口。它繼承了OLE DB技術的優點具有易於使用、訪問效率高、功能強大的特點。因爲是面向對象的內部通過各個對象相互作用實現。既可訪問關係型數據庫也可訪問非關係型數據庫。

缺點唯一缺點應該是基於COM技術所以不能跨平臺使用只能用在支持COM接口的機器上也就是微軟的視窗系統了。對於使用VC++來進行開發的話也不能算是一個缺點了

 

 

 

 

 

 

 

 

 

摘要隨着數據庫產品和技術的發展數據庫訪問技術也從ODBC、DAO、RDO、OLE DB、ADO 和 RDS發展到今天的ADO.NET。以下內容旨在爲你展示數據庫訪問技術的概貌。

ODBCOpen Database Connectivity開放數據庫互連

ODBC 技術爲訪問不同的SQL 數據庫提供了一個共同的接口。ODBC 使用 SQL 作爲訪問數據的標準。這一接口提供了最大限度的互操作性一個應用程序可以通過共同的一組代碼訪問不同的 SQL 數據庫管理系統 (DBMS)。開發人員可以添加數據庫驅動程序將應用程序與用戶所選的 DBMS 聯繫起來。驅動程序管理器提供應用程序與數據庫之間的中間鏈接。ODBC 接口包含一系列功能由每個 DBMS 的驅動程序實現。當應用程序改變它的 DBMS 時開發人員只使用新的 DBMS 驅動程序替代舊的驅動程序並且應用程序可以無需修改代碼照常運行。

標準 ODBC 結構的關係圖如下

標準 ODBC 結構的關係圖

 

DAO & RDOData AccessObjects 數據訪問對象 & Remote Data Objects遠程數據對象

DAO 是建立在 Microsoft Jet Microsoft Access 的數據庫引擎基礎之上的。Jet 是第一個連接到 Access 的面向對象的接口。使用 Access 的應用程序可以用 DAO 直接訪問數據庫。由於 DAO 是嚴格按照 Access 建模的因此使用 DAO 是連接 Access 數據庫最快速、最有效的方法。DAO 也可以連接到非 Access 數據庫例如SQL Server 和 Oracle。DAO使用 ODBC但是由於 DAO 是專門設計用來與 Jet 引擎對話的Jet 將解釋DAO 和 ODBC 之間的調用。使用除 Access 之外的數據庫時這種額外的解釋步驟導致較慢的連接速度。如下圖所示

使用數據訪問對象 (DAO) 訪問數據庫

要克服這樣的限制Microsoft 創建了 RDO。圖 Application1 顯示了 RDO 如何直接訪問 ODBC API而無需通過 Jet 引擎。不久之後Microsoft 推出了 ODBCDirect它是 DAO 的擴展在後臺使用 RDO。圖Application2 顯示 ODBCDirect 如何允許現有的 DAO 應用程序訪問數據庫而沒有 Jet 引擎產生的性能損失。

使用RDO 直接訪問 ODBC

 

OLE DBObject Linking and Embedding,Database對象鏈接嵌入數據庫

OLE DB 建立於 ODBC 之上並將此技術擴展爲提供更高級數據訪問接口的組件結構。此結構對企業中及 Internet 上的 SQL、非SQL 和非結構化數據源提供一致的訪問。實際上在訪問基於 SQL 的數據時OLE DB 仍使用 ODBC因爲對於SQL 它是最優結構。

OLE DB 由三個組件構成數據使用者例如一個應用程序包含並公開數據的數據提供程序以及處理並傳輸數據的服務組件例如查詢處理器、遊標引擎。OLE DB 是一個針對 SQL 數據源和非 SQL 數據源例如郵件和目錄進行操作的 API。如下圖所示

OLE DB

OLE DB 爲 C 和 C++ 程序員及使用其他包含 C 樣式函數調用語言的程序員提供綁定。有一些語言例如 VB 和 VBScript不提供指針數據類型地址變量。因此這些語言不能使用 C 樣式綁定而且不能直接調用 OLE DB。

ADOActiveX Data ObjectsActiveX數據對象

在此基礎上Microsoft 推出了另一個數據訪問對象模型ADO。ADO 採用基於 DAO 和 RDO 的對象並提供比 DAO 和 RDO 更簡單的對象模型儘管會產生一些冗餘的功能如現在進行一項操作時可以用不止一種方法。ADO 中的對象層次結構比 DAO 中的更平緩。ADO 包含一些簡化對數據存儲區數據的訪問任務的內置對象。

下圖顯示了應用程序連接到數據庫可採取的許多途徑。例如VB 程序員可以使用 ADO 將應用程序連接到 OLE DB 提供程序。如果數據庫不支持 OLE DB應用程序可以通過 ODBC 連接。Visual C++ (VC++) 程序員可以使用 ADO 或直接通過 OLE DB 連接。

應用程序連接到數據庫的途徑

讓我們看一個簡單示例它顯示 ADO 是如何運行的。清單 1 顯示可如何使用典型的記錄集對象--ADO 中的核心對象。記錄集對象表示一系列記錄很像一個表並支持遊標類型例如adOpenForwardOnly、adOpenKeyset、adOpenDynamic 和 adOpenStatic。遊標可以在服務器端默認情況下也可在客戶端。

清單 1

<%

    Dim connStr, rs
    connStr = "Provider=SQLOLEDB.1;Persist SecurityInfo=False;User ID=sa;Initial Catalog=pubs;Data Source=localhost"
    SET rs= Server.CreateObject("ADODB.Recordset")
    <!--[if !supportEmptyParas]-->rs.Open"Authors", connStr, adOpenForwardOnly, adLockOptimistic, adCmdTable
    WHILE NOT rs.EOF
       response.write rs("au_fname")& "," & rs("au_lname") & "<br>"
       rs.moveNext
    END
    SET rs=nothing
%>

要訪問一條記錄ADO 需要按順序掃描記錄集。要訪問多個表需要執行 JOIN 查詢並將返回的結果作爲記錄集。雖然記錄集對象支持斷開的數據訪問ADO 還是主要爲連接的數據訪問而設計。這種連接的訪問模式佔用服務器端的重要資源。另外要傳輸記錄集必須使用 COM 封送處理。COM 封送處理是數據類型轉換過程這種轉換佔用額外的系統資源。

從 ADO 2.1 開始Microsoft 將 XML 支持添加到 ADO 對象模型這樣就可將記錄集保存爲 XML 文檔。然而直到 ADO 2.5 出現ADO 2.1 中 XML 支持的一些限制例如分層記錄集對象的保持才被取消。雖然 ADO 可以將 XML 文檔讀入記錄集但它只能讀取名爲高級數據表圖 (Advanced Data TableGram, ADTG) 的專用架構。

Microsoft 希望擁有斷開的數據訪問機制它擴展了 ADO 並推出遠程數據服務 (RDS)。RDS 是按照 ADO 建模的無需實時連接就可以使記錄集傳輸到客戶端例如Web 瀏覽器。然而如同 ADO 一樣RDS 使用 COM 封送處理將記錄集從服務器傳輸到客戶端。

 

ADO.NET

在開始設計 .NET 框架時Microsoft 就以此爲契機重新設計了數據訪問模型。Microsoft 沒有進一步擴展 ADO而是決定設計一個新的數據訪問框架,但保留了縮寫詞。Microsoft 根據其成功的 ADO 對象模型經驗設計了 ADO.NET。但 ADO.NET 滿足了 ADO 無法滿足的三個重要需求提供了斷開的數據訪問模型這對 Web 環境至關重要提供了與 XML 的緊密集成還提供了與 .NET 框架的無縫集成例如兼容基類庫類型系統。

下圖顯示了 ADO.NET 的結構。但缺少了能夠在 ADO 中執行諸多功能的記錄集對象。ADO.NET 具有幾個專用對象以執行特定任務用於代替記錄集對象。表 1 描述了其中的三個專用對象DataAdapter、DataReader 和 Dataset。

ADO.NET 結構

表一

DataAdapter The DataAdapter object provides a bridge between the databaseand a DataSet. The key advantage of DataAdapter is that it can work with anydata source. The data source might be a database or it might be an XMLdocument.

//DataAdapter提供了一個數據庫與DataSet之間的橋樑。它最大的優點在於能工作於不同的數據源這些數據源可以是數據庫也可以是 XML文件。

DataReader The DataReader object provides an efficient way to retrieverecords on the server side. DataReader is a connected, read-only, andforward-only data-access mode. This object is useful for Web applications,which use DataReader to display records on Web pages.

//DataReader對象提供了從服務器端高效獲取數據的途徑它是在只讀和只進的連接模式下從數據源讀取數據的這個對象對通過網頁展示數據記錄的Web應用程序開發很有用。

DataSet The DataSet object provides disconnected copies of records from adatabase. The DataSet object stores records from a table (or multiple tables)in memory without holding a connection to the server. When in memory, DataSetis a binary object. When the DataSet is remoted, transferred, or serialized,it's represented as a DiffGram—an XML format. Because XML is plaintext, recordscan be exchanged easily over the Web, bypassing firewall restrictions限制性. DataSet also contains various objectssuch asconstraints壓縮, relationships, and viewsthat let youmanipulate操作 tables on the client side instead ofworking through one Recordset in ADO.

//DataSet對象在斷開數據庫連接的情況下提供了一個數據庫內容的拷貝它把記錄從表中取出以二進制對象的形式存放在內存中。當Dataset被調用的時候它表現爲DiffGram--一種XML格式

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章