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