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