揭秘ADO.NET性能原理分析
ADO.NET越來越多的人使用,它也很快速的發(fā)展起來,在ADO.NET2.0中它的數(shù)據(jù)交互性能也有很大的提升,DataTable的功能被大大增強(qiáng)了。畢竟我們不是時(shí)時(shí)需要Dataset,這里我們就ADO.NET性能來深入的探討一下吧。
#T#1.ADO.NET性能裝載XML數(shù)據(jù)
在 ADO.NET 1.* 時(shí),離線的數(shù)據(jù)訪問模型以 DataSet 對(duì)象為主,因此若要將 XML 的數(shù)據(jù)裝載到 DataTable,必須通過 DataSet 來實(shí)現(xiàn)。若我們僅操作一個(gè)數(shù)據(jù)表,不需要訪問多個(gè)數(shù)據(jù)表,則還需經(jīng)過 DataSet 類才能賦予 DataTable 數(shù)據(jù)或?qū)?shù)據(jù)輸出成 XML
文件,其過程有點(diǎn)繁瑣。ADO.NET 2.0 的 DataTable 類則新增了與 DataSet 相同的。ReadXML、ReadXMLSchema、WriteXML 以及WriteXMLSchema 等方法。因此我們可以直接操作 DataTable 實(shí)例,而不需先創(chuàng)建 DataSet 類的實(shí)例來賦予 DataTable 實(shí)例數(shù)據(jù),然后只使用 DataTable 實(shí)例。
2.ADO.NET性能結(jié)果集直接裝載DataTable
可以通過DataTableReader對(duì)象生成DataTable和DataSet。利用DataTable和DataSet在2.0版本中新引入的方法Load,可以傳遞DataTableReader或者任何實(shí)現(xiàn)IDataReader接口的類對(duì)象。下面的代碼就是通過Load方法將dt1的數(shù)據(jù)傳遞到新的數(shù)據(jù)表dt2中:
- DataTableReader dtRdr = dt1.CreateDataReader();
- DataTable dt2 = new DataTable(); dt2.Load(dtRdr);
在使用Load方法裝載多行數(shù)據(jù)時(shí),可以先調(diào)用BeginLoadData方法來避免通知 (notifications),索引維護(hù)(index maintenance)以及約束檢查(constraint checking),然后再通過EndLoadData方法返回?cái)?shù)據(jù)。
3.通過 SqlDataAdapter 類實(shí)例將 DataTable 內(nèi)的記錄更新回?cái)?shù)據(jù)源
現(xiàn)在我們還可以使用 SqlDataAdapter 類實(shí)例通過 DataGridView 更新的記錄。
Update方法由以下幾個(gè)重載:
- public int Update(DataRow[] dataRows);
- public override int Update(DataSet dataSet);
- public int Update(DataTable dataTable);
- public int Update(DataSet dataSet, string srcTable);