网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > DotNet > ADO.NET > 使用ADO.NET2.0提升数据交互性能(5)  

使用ADO.NET2.0提升数据交互性能(5)

2008-02-21  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

六:DataTable和其他方面的性能提升

  另一个好消息是DataTable的功能被大大增强了。毕竟我们不是时时需要Dataset。

  1.装载XML数据

  在 ADO.NET 1.* 时,离线的数据访问模型以 DataSet 对象为主,因此若要将 XML 的数据装载到 DataTable,必须通过 DataSet 来实现。若我们仅操作一个数据表,不需要访问多个数据表,则还需经过 DataSet 类才能赋予 DataTable 数据或将数据输出成 XML

  文件,其过程有点繁琐。ADO.NET 2.0 的 DataTable 类则新增了与 DataSet 相同的

  ReadXML、ReadXMLSchema、WriteXML 以及WriteXMLSchema 等方法。因此我们可以直接操作 DataTable 实例,而不需先创建 DataSet 类的实例来赋予 DataTable 实例数据,然后只使用 DataTable 实例。



  2.结果集直接装载DataTable

  可以通过DataTableReader对象生成DataTable和DataSet。利用DataTable和DataSet在2.0版本中新引入的方法Load,可以传递DataTableReader或者任何实现IDataReader接口的类对象。下面的代码就是通过Load方法将dt1的数据传递到新的数据表dt2中:
DataTableReader dtRdr = dt1.CreateDataReader(); DataTable dt2 = new DataTable(); dt2.Load(dtRdr);

网管u家u.bitsCN.com

  在使用Load方法装载多行数据时,可以先调用BeginLoadData方法来避免通知 (notifications),索引维护(index maintenance)以及约束检查(constraint checking),然后再通过EndLoadData方法返回数据。



  3.通过 SqlDataAdapter 类实例将 DataTable 内的记录更新回数据源
 
  现在我们还可以使用 SqlDataAdapter 类实例通过 DataGridView 更新的记录。

  Update方法由以下几个重载:
public int Update(DataRow[] dataRows); public override int Update(DataSet dataSet); public int Update(DataTable dataTable); public int Update(DataSet dataSet, string srcTable);
网管u家u.bitscn@com
  4.千呼万唤的Merge方法,终于实现了。
public void Merge(DataTable table); public void Merge(DataTable table, bool preserveChanges); public void Merge(DataTable table, bool preserveChanges, MissingSchemaAction missingSchemaAction);
网管u家u.bitscn@com
  preserveChanges:参数决定当前 DataTable在相同主键记录合并时,是保留数据表内当前更新过的记录(设置为 True),还是以合并来的记录覆盖掉曾经修改过的记录(设置为 False)。

  5.轻量级对象和快速遍历

  ADO.NET 2.0中的DataTable提供了CreateDataReader方法(在之前的版本名为GetDataReader),该方法将创建一个 DataTableReader对象。DataTableReader与DataTable不同,它是一个轻量级的对象,其支持 Disconnected,这一点与DataReader(SqlDataReader)不同。这些特点决定遍历DataTableReader对象将更加快速,占用的数据资源更少(Disconnected)。下面的代码创建了一个DataTableReader对象,并将其绑定到 DataGridView控件上:
using (SqlConnection cn = new SqlConnection(cnStr)) { SqlCommand cmd = new SqlCommand(sqlAllCustomers, cn); SqlDataAdapter adpt = new SqlDataAdapter(cmd); DataTable dtCustomers = new DataTable("Customers"); adpt.Fill(dtCustomers); DataTableReader dtRdr = ds.CreateDataReader(); dgvCustomers.DataSource = dtRdr; }
中国网管联盟bitsCN.com
网管联盟bitsCN@com


TAGs   交互   性能   数据   提升   使用       DataTable   方法   DataTableReader      
 上一篇:使用ADO.NET2.0提升数据交互性能(4)   下一篇:挖掘ADO.NET Entity框架的性能
使用ADO.NET2.0提升数据交互性能(5) 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户