


IT開發/UI設計/運營/影視特效培訓機構
400-111-8989

經典的ADO和ADO.NET里的一切都是從Connection(連接)對象開始的。Connection對象表示對數據源的唯一物理連接,但是兩者就這么一點相同之處。盡管Connection對象的不同更加復雜(也就是說,連接是如何處理的),但是這些不同點的范圍是很大的。在經典的ADO里,在連接被創建和建立的時候,應用程序能夠按照自己的需要保持這個連接。事實上,應用程序沒有被限制只能建立一個連接;它們可以建立多個連接。但是由于連接是有限的資源,所以這種方法還需要考慮其他一些問題。
ADO.NET對連接采取了不同的方法。連接只被保持足夠長的時間來完成一項操作。一旦這項操作被完成,Recordset就被立即斷開。命令的結果被讀入Dataset,在這里這些結果能夠被處理,即使它們同數據源已經斷開。雖然經典的ADO也能夠進行離線處理,但是ADO是一個極其好的例子,能夠說明有可能同輕易實現之間的差別。
在ADO.NET里,節省連接資源的方法同其處理更新的方法是一樣的。當Dataset發生變化的時候,由于ADO.NET的離線屬性,這些變化不會立即反映到真實的表格上。要讓變化“真正地”發生,你就需要使用DataAdapter對象,它被用來進行填充操作以及從Dataset或者對Dataset進行更新。
ADO.NET的DataAdapter對象有四個方法來從數據源取回數據或者對數據源更新數據。這些方法是:SelectCommand、InsertCommand、UpdateCommand和DeleteCommand。這些方法最好的地方是:一旦知道了名稱,你就它們能夠做什么了。
說再見
在經典的ADO里,Recordset曾是訪問數據的主要方法。它就像執行查詢一樣簡單,使用從一個或者多個表格請求得來的列就能夠創建一個Recordset。在多個行(記錄)被返回的情況下,就要通過使用move、moveNext、movePrevious、moveLast或者moveFirst這些方法來實現導航。當然不是所有這些方法都能使用,因為使用了只能向前的指針(forward-only cursor),所以在這種情況下只能允許使用moveNext、moveLast和move(如果向前移動)。
在ADO.NET里,Recordset已經被取消了,而指針也只留有其概念。它們已經被提供相同功能的數據類所取代。例如,我用過的大多數經典的ADO指針都是只能向前、只讀的,因為我是那些相信最好盡快就能完成輸入輸出的開發人員之一。隨著ADO.NET的出現,由DataReader對象提供了只能向前的、只讀的指針所提供的功能。
新的特性和改進的內容
ADO.NET最可吹噓的特性是其數據訪問的離線方法,這是可以得到證明的。但是這也是受到誤解最多的特性之一。在我當前被分配設計ASP網上商店的時候,在有些會議上,只要.NET一被提到,馬上就會引起激烈的爭論。
為什么會引起激烈的爭論?嗯,Dataset駐留在內存里的觀念曾經被理解為“整個數據庫都被保存在客戶機器的內存里”。消除這種看法需要花上一些時間,但是最終,持這種看法的人都被說服,因為他們了解到ADO.NET和ASP.NET都不會這樣工作,當然,除非要求它們這樣做。
ADO.NET對象駐留內存的性質是其強項。它提供了操控數據的強大能力,在經典ADO里如此操控數據曾經是很困難的,如果不是不可能的話。ADO.NET和XML現在相互進行了集成。對于ADO來說,使用ADO的Recordset來生成XML文檔是相對容易的,但是反過來就沒有那么容易了。要從一個XML文檔生成一個ADO的Recordset需要大量的代碼。但是由于ADO.NET和XML進行了相互集成,因此使用XmlDataDocument就能夠進行相互轉換。
填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!