大致講析ADO.NET數(shù)據(jù)源相關(guān)技巧
和許多ADO.NET數(shù)據(jù)源一樣,DataSet允許你在添加新行時(shí)識(shí)別自動(dòng)增加值的列。在DataSet中使用自動(dòng)增加列時(shí),由于數(shù)據(jù)源也有自動(dòng)增加列,需要避免添加到DataSet中的本地行號(hào)與添加到數(shù)據(jù)源中的行之間的沖突。
SQLDataReader對(duì)象
許多數(shù)據(jù)操作要求你只是讀取一串?dāng)?shù)據(jù)。data reader對(duì)象允許你獲得從command對(duì)象的SELECT語(yǔ)句得到的結(jié)果??紤]性能的因素,從data reader返回的數(shù)據(jù)都是快速的且只是“向前”的數(shù)據(jù)流。這意味著你只能按照一定的順序從數(shù)據(jù)流中取出數(shù)據(jù)。這對(duì)于速度來(lái)說(shuō)是有好處的,但是如果你需要操作數(shù)據(jù),更好的辦法是使用DataSet。
DataSet對(duì)象
DataSet對(duì)象是數(shù)據(jù)在內(nèi)存中的表示形式。它包括多個(gè)DataTable對(duì)象,而DataTable包含列和行,就象一個(gè)普通的數(shù)據(jù)庫(kù)中的表。你甚至能夠定義表之間的關(guān)系來(lái)創(chuàng)建主從關(guān)系(parent-child relationships)。
DataSet是在特定的場(chǎng)景下使用――幫助管理內(nèi)存中的數(shù)據(jù)并支持對(duì)數(shù)據(jù)的斷開(kāi)操作的。ADO.NET數(shù)據(jù)源是被所有Data Providers使用的對(duì)象,因此它并不像Data Provider一樣需要特別的前綴。#t#
SqlDataAdapter對(duì)象
某些時(shí)候你使用的數(shù)據(jù)主要是只讀的,并且你很少需要將其改變至底層的數(shù)據(jù)源。同樣一些情況要求在內(nèi)存中緩存數(shù)據(jù),以此來(lái)減少并不改變的數(shù)據(jù)被數(shù)據(jù)庫(kù)調(diào)用的次數(shù)。
Data adapter通過(guò)斷開(kāi)模型來(lái)幫助你方便的完成對(duì)以上情況的處理。當(dāng)在一單批次的對(duì)數(shù)據(jù)庫(kù)的讀寫操作的持續(xù)的改變返回至數(shù)據(jù)庫(kù)的時(shí)候,ADO.NET數(shù)據(jù)源(fill)DataSet對(duì)象。data adapter包含對(duì)連接對(duì)象以及當(dāng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀取或者寫入的時(shí)候自動(dòng)的打開(kāi)或者關(guān)閉連接的引用。
另外,data adapter包含對(duì)數(shù)據(jù)的SELECT,INSERT,UPDATE和DELETE操作的command對(duì)象引用。你將為DataSet中的每一個(gè)table都定義data adapter,它將為你照顧所有與數(shù)據(jù)庫(kù)的連接。所有你將做的工作是告訴data adapter什么時(shí)候裝載或者寫入到數(shù)據(jù)庫(kù)。
總結(jié):ADO.NET數(shù)據(jù)源交互的.NET技術(shù)。有許多的Data Providers,它將允許與不同的數(shù)據(jù)源交流――取決于它們所使用的協(xié)議或者數(shù)據(jù)庫(kù)。然而無(wú)論使用什么樣的Data Provider,你將使用相似的對(duì)象與數(shù)據(jù)源進(jìn)行交互。SqlConnection對(duì)象管理與數(shù)據(jù)源的連接。
SqlCommand對(duì)象允許你與數(shù)據(jù)源交流并發(fā)送命令給它。為了對(duì)進(jìn)行快速的只“向前”地讀取數(shù)據(jù),ADO.NET數(shù)據(jù)源。如果想使用斷開(kāi)數(shù)據(jù),使用DataSet并實(shí)現(xiàn)能進(jìn)行讀取或者寫入數(shù)據(jù)源的SqlDataAdapter。