成長空間

          MiLife

          常用鏈接

          統(tǒng)計

          積分與排名

          Automation Testing Development

          最新評論

          ADO and ADO.net

          ADO是什么,它是如何操作數(shù)據(jù)庫的?

            答:ADO的全名是ActiveX Data Object(ActiveX數(shù)據(jù)對象),是一組優(yōu)化的訪問數(shù)據(jù)庫的專用對象集,它為ASP提供了完整的站點數(shù)據(jù)庫解決方案,它作用在服務器端,提供含有數(shù)據(jù)庫信息的主頁內(nèi)容,通過執(zhí)行SQL命令,讓用戶在瀏覽器畫面中輸入,更新和刪除站點數(shù)據(jù)庫的信息。

            ADO主要包括Connection,Recordset和Command三個對象, 它們的主要功能如下:

            ·Connection對象:負責打開或連接數(shù)據(jù)庫文件;
            ·Recordset對象:存取數(shù)據(jù)庫的內(nèi)容;
            ·Command對象:對數(shù)據(jù)庫下達行動查詢指令,以及執(zhí)行SQL Server的存儲過程。

          使用Recordset對象和Command對象來訪問數(shù)據(jù)庫的區(qū)別在哪里?

            答:Recordset對象會要求數(shù)據(jù)庫傳送所有的數(shù)據(jù),那么數(shù)據(jù)量很大的時候就會造成網(wǎng)絡的阻塞和數(shù)據(jù)庫服務器的負荷過重,因此整體的執(zhí)行效率會降低。
          利用Command對象直接調(diào)用SQL語句,所執(zhí)行的操作是在數(shù)據(jù)庫服務器中進行的,顯然會有很高的執(zhí)行效率。特別是在服務器端執(zhí)行創(chuàng)建完成的存儲過程,可以降低網(wǎng)絡流量,另外,由于事先進行了語法分析,可以提高整體的執(zhí)行效率。


          什么是ADO.NET架構

          如今大部分的應用程序都需要后臺的數(shù)據(jù)庫來為其提供大量的數(shù)據(jù)來源,而應用程序與數(shù)據(jù)庫之間的交流稱為數(shù)據(jù)訪問。而ASP.NET則使用ADO.NETActive X Data Object)作為數(shù)據(jù)的訪問與操作的協(xié)議,從而使得我們可以在Internet上操作這些數(shù)據(jù)。

          ADO.NET的數(shù)據(jù)訪問分為兩大部分:數(shù)據(jù)集(DataSet)與數(shù)據(jù)提供源(Data Provider,我并不清楚中文該怎么翻譯,就叫它數(shù)據(jù)提供源好了,不要和“數(shù)據(jù)源”—Data Source搞混)

           

          數(shù)據(jù)集:

          數(shù)據(jù)集是一個非在線,完全由內(nèi)存表示的一系列數(shù)據(jù),可以被看作一份本地磁盤數(shù)據(jù)庫中部分數(shù)據(jù)的拷貝。數(shù)據(jù)集完全駐留內(nèi)存,可以被獨立于數(shù)據(jù)庫地訪問或者修改。當數(shù)據(jù)集的修改完成后,更改可以被再次寫入數(shù)據(jù)庫,從而保留我們所做過的更改。數(shù)據(jù)集中的數(shù)據(jù)可以由任何數(shù)據(jù)源(Data Source)提供,比如SQL Server或者Oracle

           

          數(shù)據(jù)提供源:

          數(shù)據(jù)提供源用于提供并維護應用程序與數(shù)據(jù)庫之間的連接。

          數(shù)據(jù)提供源是一系列為了提供更有效率的訪問而協(xié)同工作的組件。如今微軟在ADO.NET中提供了兩組數(shù)據(jù)提供源,一組叫做SQL Data ProviderSQL數(shù)據(jù)提供源),用于提供應用程序與SQL Server 7.0或者更高版本的訪問。另一組叫做OleDb DataProviderObject Linking and Embedding DataBase DataProvider),可以允許我們訪問例如Oracle 之類的第三方數(shù)據(jù)源。

          每組數(shù)據(jù)提供源中都包含了如下四個對象:

          Connect對象提供了對數(shù)據(jù)庫的連接。

          Command對象可以用來執(zhí)行命令。

          DataReader對象提供了只讀的數(shù)據(jù)記錄集。

          DataAdapter對象提供了對數(shù)據(jù)集更新或者修改的操作。

           

          總體來說,使用ADO.NET訪問數(shù)據(jù)可以被概括為以下步驟:

          首先應用程序創(chuàng)建一個Connect對象用來建立與數(shù)據(jù)庫之間的連接。然后Command對象提供了執(zhí)行命令的接口,可以對數(shù)據(jù)庫執(zhí)行相應的命令。當命令執(zhí)行后數(shù)據(jù)庫返回了大于零個數(shù)據(jù)時,DataReader會被返回從而提供對返回的結(jié)果集的數(shù)據(jù)訪問。或者,DataAdapter可以被用來填充數(shù)據(jù)集,然后數(shù)據(jù)庫可以由Command對象或者DataAdapter對象進行相應的更改。

          具體來看數(shù)據(jù)提供源的四種對象

           

          Connect 對象

          Connect對象用來提供對數(shù)據(jù)庫的連接,Microsoft Visual Studio .Net中微軟提供了兩種Connect對象,分別為SqlConnection對象,用來提供對SQL Server 7.0或更高版本的連接,同時還有OleDbConnection對象,用來提供對Access與其他第三方數(shù)據(jù)庫的連接。

           

          Command 對象

          同樣,Command對象分為兩組,SqlCommandOleDbCommandCommand對象被用來執(zhí)行針對數(shù)據(jù)庫的命令,比如執(zhí)行數(shù)據(jù)庫的存儲過程(Stored Procedure)SQL命令,或者直接返回一個完整的表。Command對象提供三種方法(Methods)用來執(zhí)行上述操作。

          ExecuteNonQuery用來執(zhí)行一個不需返回數(shù)據(jù)的命令,比如表的插入,更新或者刪除操作。

          ExecuteScalar返回從一個查詢得到的單獨的值。

          ExecuteReader用來返回一個從DataReader來的結(jié)果集。

           

          DataReader對象

          DataReader提供了forward-only, read-only, connected stream的結(jié)果集。

          這里的forward-only表示數(shù)據(jù)只能夠向前,如果我們訪問了一條數(shù)據(jù)后想要再次訪問這條數(shù)據(jù)就必須重新開始。

          Read-only表示只讀,不能夠?qū)Y(jié)果集進行操作。

          Connected stream表示DataReader對象是面向流連接的。所謂的流可以把它看作是管道,這邊放進去東西那邊就可以得到,實際上TCP協(xié)議就是面向連接的流協(xié)議。

          不同于其他的三種對象,DataReader不能夠被用戶直接創(chuàng)建,必須也只能由ExecuteReader返回。

          SqlCommand.ExecuteReader返回SqlDataReader

          同理,OleDbCommand.ExecuteReader返回OleDbDataReader

          需要注意的是,DataReader對應用程序提供行級訪問(每次只能訪問數(shù)據(jù)的一行),當你需要多行的時候就需要多次的訪問這個對象。這樣做的好處就是內(nèi)存中永遠只需要保留一行的數(shù)據(jù),缺點就是每次訪問都要開啟Connect的連接。

           

          DataAdapter對象

          DataAdapter對象是ADO.NET數(shù)據(jù)訪問的核心。實際上它是數(shù)據(jù)集與數(shù)據(jù)庫的中間層。DataAdapter可以使用Fill方法來為DataTable或者DataSet填充數(shù)據(jù)。然后當內(nèi)存操作完成后DataAdapter可以確認之前的操作從而對真正存于數(shù)據(jù)庫上的數(shù)據(jù)進行修改。

          DataAdapter包含四種屬性用來代表不同的數(shù)據(jù)庫命令:

          SelectCommand用來查詢數(shù)據(jù)

          InsertCommand用來插入數(shù)據(jù)

          DeleteCommand用來刪除數(shù)據(jù)

          UpdateCommand用來更新數(shù)據(jù)Update方法被調(diào)用后,數(shù)據(jù)集中的數(shù)據(jù)被更改然后拷貝回數(shù)據(jù)庫,緊接著使用InsertCommand, DeleteCommand, UpdateCommand中合適一個來進行數(shù)據(jù)更新。

          posted on 2007-07-25 16:46 Picasso 閱讀(272) 評論(0)  編輯  收藏 所屬分類: .Net


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 阜新| 偃师市| 吐鲁番市| 来宾市| 阳江市| 玛沁县| 杭锦后旗| 老河口市| 隆安县| 远安县| 余江县| 肥西县| 松原市| 乌兰浩特市| 金山区| 文安县| 定结县| 商城县| 龙游县| 五峰| 武汉市| 顺义区| 姚安县| 集安市| 策勒县| 浙江省| 仪陇县| 武义县| 荆州市| 山阳县| 尚义县| 铜山县| 阳信县| 五指山市| 疏附县| 西盟| 台南市| 特克斯县| 平舆县| 五指山市| 城口县|