全面分析ADO.NET數據集類型
ADO.NET數據集有很多值得學習的地方,這里我們主要介紹ADO.NET數據集類型,包括介紹typed DataSet和untyped DataSet等方面。ADO.NET數據集類型分為類型化數據集和非類型化數據集,關于對他們的描述請參見圖所示:

ADO.NET數據集類型圖
使用類型化數據集訪問列,參見如下代碼:
- string employeeName;
- employeeName = dsEmployees.Emp[0].EmpName;
從dsEmployees數據集的Emp表中***個記錄返回EmpName列,然后將其存儲在employeeName字符串變量中。使用非類型化數據集訪問列 ,參見如下代碼:
- string employeeName;
- employeeName = dsEmployees.Tables["Emp"].Rows[0]["EmpName"];
使用Tables集合返回EmpName列。
小知識:
typed DataSet和untyped DataSet
typed DataSet是從DataSet派生的,它根據事先定義的Data Schema生成數據集,對數據集中的字段實行強類型約束。你可以通過它產生的cs文件看到許多方法對DataTable的操作進行了封裝,這樣你就可以通過MyDataSet.MyTable.Field對字段進行訪問,而不是像DataSet那樣:
MyDataSet.Tables["TableName"]["Field"]; 簡化了編程,同時不容易出錯,想象一下如果在"Field"中拼錯了字段名,那么編譯器也不會檢查出來,對于typed DataSet就不用了,如果你Field寫錯的話,那么馬上就可以知道。
還有就是如果你在Typed DataSet包含多數據集,同時在XSD中對這些數據集建立關系和約束,那么Type DataSet會生成相應的方法來反映這些關系和約束。如果使用untyped DataSet,你需要自己做。 性能上的考慮:雖然Typed DataSet創建對象實例的時候比unTypede DataSet要多一些開銷(時間和空間),但是在填充數據的時候要比untyped DataSet快,這是因為DataAdapter已經知道怎么Fill一個Typed DataSet,相比之下,DataSet需要兩次讀取數據庫,***次取得數據庫中表的結構信息,第二次才fill數據。
Typed DataSet相對于DataSet的缺陷:除了創建的開銷之外,Typed DataSet不如DataSet靈活,因為Typed DataSet一旦確定,數據表的結構就固定了,如果需要修改,必須重新生成。而DataSet你可以隨時根據需要進行操作(比如添加字段,刪除字段等)。
【編輯推薦】