使你拍案驚奇的ADO .NET組件
在一個數(shù)據(jù)集中查詢符合特定條件的行時,使用基于ADO .NET組件的查看表將提高性能。給數(shù)據(jù)表指定主鍵(PrimaryKey)值時,就建立了一個索引。當(dāng)為數(shù)據(jù)表建立數(shù)據(jù)視圖(DataView)時也建立了索引。
是啊,這里myAda到底給我們做了什么?它做的也不少哦,它先要自動的把我們的數(shù)據(jù)庫連接打開,就是上面代碼中已經(jīng)定義好的那個連接對象;完了尋覓到myAda數(shù)據(jù)適配器的SelectCommand命令。
根據(jù)這個SelectCommand命令去數(shù)據(jù)表里查詢數(shù)據(jù),***把提取到的數(shù)據(jù)放進(jìn)了DataSet(在此為mySet)中的一個DataTable(在此為UserInfo)中,等到一切做完后,還會很負(fù)責(zé)任的把它自己打開的連接給關(guān)閉掉,哈哈,很不錯的一個家伙哦!
查詢完成了,更新,刪除當(dāng)然也是不在話下了,我們在dataGridView控件中編輯完數(shù)據(jù)后,ADO .NET組件會首先將變化反映到關(guān)聯(lián)的DataSet的DataTable中,接下來還是數(shù)據(jù)適配器上場,直接調(diào)用它的Update***方法就可以了,就會把我們的數(shù)據(jù)的更改寫到源數(shù)據(jù)表中了.
這里***的背后仍然是DataAdaper的SqlCommand命令,我們此前已經(jīng)為它們配置好了,這里的一切就交給Update方法吧.這里要羅索一下的是mySet.Tables[0].AcceptChanges(),這句很有用,要不你更新一條后,接著再去更新第二條,第三條的話,就會出現(xiàn)異常,因為一次更新發(fā)生后,ADO .NET組件對本次更新掛起,到下一次更新的時候又會重復(fù)進(jìn)行上一次掛起的更改,所以在每次更新后必須調(diào)用AcceptChanges來清除掛起的更改。#t#
ADO.NET是對Microsoft ActiveX Data Objects (ADO)一個跨時代的改進(jìn),它提供了平臺互用性和可伸縮的數(shù)據(jù)訪問。由于傳送的數(shù)據(jù)都是XML格式的,因此任何能夠讀取XML格式的應(yīng)用程序都可以進(jìn)行數(shù)據(jù)處理。事實上,接受數(shù)據(jù)的組件不一定要是ADO .NET組件,它可以是基于一個Microsoft Visual Studio的解決方案,也可以是任何運行在其它平臺上的任何應(yīng)用程序。以前做數(shù)據(jù)庫訪問的時候。
需要一直與數(shù)據(jù)庫保持連接,直到獲取完所有滿足需要的數(shù)據(jù)之后才會斷開數(shù)據(jù)庫連接,這種數(shù)據(jù)庫訪問方式稱之為連接式數(shù)據(jù)訪問技術(shù)。相比于以前的連接式數(shù)據(jù)訪問技術(shù),ADO.NET除了提供連接式數(shù)據(jù)訪問技術(shù)之外,還提供了另一種斷開式解決方案,那就是在內(nèi)存中模擬一個數(shù)據(jù)庫,也就是內(nèi)存中的數(shù)據(jù)庫。我們知道在實際的數(shù)據(jù)庫技術(shù)中,每個數(shù)據(jù)庫就是一個業(yè)務(wù)邏輯單元,ADO .NET組件一般來說這個數(shù)據(jù)庫包含了實現(xiàn)一個應(yīng)用軟件或者一個網(wǎng)站所需要的全部數(shù)據(jù)。