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

ADO.NET实用经验与大家分享

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

  ADO.NET作为微软最新的数据访问技术,已经在企业开发中得到了广泛的应用。对于一线的开发人员来说,掌握基本的概念和技术之后,提高应用水平和解决实际问题的最有效手段,莫过于相互交流彼此的最佳时间经验经验。在这篇文章中,两位ADO.NET专家向读者毫无保留地、详尽地介绍了很多实用经验。 网管联盟bitsCN@com

  简介

网管联盟bitsCN_com

  本文为您提供了在Microsoft ADO.NET应用程序中实现和获得最佳性能、可伸缩性以及功能的最佳解决方案;同时也讲述了使用ADO.NET中可用对象的最佳实践;并提出一些有助于优化ADO.NET应用程序设计的建议。

网管联盟bitsCN_com

  。NET框架数据提供程序

网管论坛bbs_bitsCN_com

  。NET框架中的数据提供程序(Data Provider)在应用程序和数据源之间起到桥梁作用……NET框架数据提供程序能够从数据源中返回查询结果、对数据源执行命令、将DataSet中的更改传播给数据源。本文包括有关哪个。NET框架数据提供程序是最适合您需要的一些技巧。

网管网www_bitscn_com

  使用哪个。NET框架数据提供程序? 网管网www_bitscn_com

  为了使您的应用程序获得最佳性能,请使用最适合您的数据源的。NET框架数据提供程序。有许多数据提供程序可供您的应用程序选用。

网管bitscn_com

  连接到SQL Server 7.0或更高版本 网管联盟bitsCN_com

  为了在连接到Microsoft SQL Server 7.0或更高版本时获得最佳性能,请使用SQL Server .NET数据提供程序。SQL Server .NET数据提供程序的设计目的就在于不通过任何附加技术层就可以直接访问SQL Server.

网管联盟bitsCN@com

  连接到ODBC数据源

网管u家u.bitscn@com

  ODBC .NET数据提供程序可在Microsoft.Data.ODBC命名空间中找到,它的体系结构与用于SQL Server和OLE DB的。NET数据提供程序相同。ODBC .NET数据提供程序遵循命名约定-以“ODBC”为前缀(例如,OdbcConnection),并使用标准ODBC连接字符串。 网管下载dl.bitscn.com

  使用DataReader、DataSet、DataAdapter和DataView 网管联盟bitsCN@com

  ADO.NET提供以下两个对象,用于检索关系数据并将其存储在内存中:DataSet和DataReader.DataSet提供一个内存中数据的关系表示形式,一整套包括一些表在内的数据(这些表包含数据、对数据进行排序并约束数据),以及表之间的关系。DataReader提供一个来自数据库的快速、仅向前、只读数据流。

网管u家u.bitsCN.com

  当使用DataSet时,经常会利用DataAdapter(也可能是CommandBuilder)与数据源进行交互。当使用DataSet时,也可以利用DataView对DataSet中的数据应用排序和筛选。也可以从DataSet继承,创建强类型DataSet,用于将表、行和列作为强类型对象属性公开。

网管联盟bitsCN_com

  下列主题包括的信息涉及:使用DataSet或DataReader的最佳时机、如何优化访问它们所包含数据、以及如何优化使用DataAdapter(包括CommandBuilder)和DataView的技巧。 网管联盟bitsCN@com

  DataSet与DataReader 中国网管论坛bbs.bitsCN.com

  当设计应用程序时,要考虑应用程序所需功能的等级,以确定使用DataSet或者是DataReader.

中国网管论坛bbs.bitsCN.com

  要通过应用程序执行以下操作,就要使用DataSet: 网管联盟bitsCN@com

  1) 在结果的多个离散表之间进行导航。 网管u家u.bitscn@com

  2) 操作来自多个数据源(例如,来自多个数据库、一个XML文件和一个电子表格的混合数据)的数据。

网管网www.bitscn.com

  3) 在各层之间交换数据或使用XML Web服务。与DataReader不同的是,DataSet能传递给远程客户端。 中国网管联盟bitsCN.com

  4) 重用同样的记录集合,以便通过缓存获得性能改善(例如排序、搜索或筛选数据)。

中国网管论坛bbs.bitsCN.com

  5) 每条记录都需要执行大量处理。对使用DataReader返回的每一行进行扩展处理会延长服务于DataReader的连接的必要时间,这影响了性能。

中国网管联盟bitsCN.com

  6) 使用XML操作对数据进行操作,例如可扩展样式表语言转换(XSLT转换)或XPath查询。

网管网www.bitscn.com

  对于下列情况,要在应用程序中使用DataReader:

网管bitscn_com

  1) 不需要缓存数据。 网管网www.bitscn.com

  2) 要处理的结果集太大,内存中放不下。

网管网www_bitscn_com

  3) 一旦需要以仅向前、只读方式快速访问数据。

网管u家u.bitscn@com

  注填充DataSet时,DataAdapter使用DataReader.因此,使用DataAdapter取代DataSet提升的性能表现为节省了DataSet占用内存和填充DataSet需要的循环。一般来说,此性能提升只是象征性的,因此,设计决策应以所需功能为基础。 网管联盟bitsCN_com

  使用强类型DataSet的好处

网管bitscn_com

  DataSet的另一个好处是可被继承以创建一个强类型DataSet.强类型DataSet的好处包括设计时类型检查,以及Microsoft Visual Studio.NET用于强类型DataSet语句结束所带来的好处。修改了DataSet的架构或关系结构后,就可以创建一个强类型DataSet,将行和列作为对象的属性公开,而不是作为集合中的项公开。例如,不公开客户表中行的姓名列,而公开Customer对象的Name属性。类型化DataSet从DataSet类派生,因此不会牺牲DataSet的任何功能。也就是说,类型化DataSet仍能远程访问,并作为数据绑定控件(例如DataGrid)的数据源提供。如果架构事先不可知,仍能受益于通用DataSet的功能,但却不能受益于强类型DataSet的附加功能。 网管下载dl.bitscn.com

  处理强类型DataSet中的空引用 网管下载dl.bitscn.com

  使用强类型DataSet时,可以使用DataSet的XML架构定义语言(XSD)架构来确保强类型DataSet可以正确处理空引用。nullValue标识符使您可用一个指定的值String.Empty代替DBNull、保留空引用或引发异常。选择哪个选项取决于应用程序的上下文。默认情况下,如果遇到空引用,就会引发异常。

网管网www.bitscn.com

  刷新DataSet中的数据 网管下载dl.bitscn.com

  如果想用服务器上的更新值刷新DataSet中的值,就使用DataAdapter.Fill.如果有在DataTable上定义的主键,DataAdapter.Fill会根据主键进行新行匹配,并且当更改到现有行时应用服务器上的值。即使刷新之前修改了这些数据,刷新行的RowState仍被设置为Unchanged.注意,如果没有为DataTable定义主键,DataAdapter.Fill就用可能重复的主键值添加新行。 网管联盟bitsCN@com

  如果想用来自服务器的当前值刷新表,并同时保留对表中的行所做的任何更改,必须首先用DataAdapter.Fill填充表,并填充一个新的DataTable,然后用preserveChanges值true将DataTable合并到DataSet之中。 网管u家u.bitsCN.com

  在DataSet中搜索数据

网管网www.bitscn.com

  在DataSet中查询与特定条件相匹配的行时,可以利用基于索引的查找提高搜索性能。当将PrimaryKey值赋给DataTable时,会创建一个索引。当给DataTable创建DataView时,也会创建一个索引。下面是一些利用基于索引进行查找的技巧。

网管网www_bitscn_com

中国网管联盟bitsCN.com


TAGs   分享   大家   经验   实用   数据   DataSet   使用   如果   DataReader      
 上一篇:ADO.NET 2.0中的DataSet和DataTable   下一篇:使用ADO.NET2.0提升数据交互性能(1)
ADO.NET实用经验与大家分享 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户