工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 微软开发专栏 > 技术专题 > 正文
使用ADO.NET的最佳实践
[文章信息]
作者:Dennis Lu Doug Rothaus
时间:2004-08-01
出处:MSDN开发精选6月刊
责任编辑:方舟
[文章导读]
本文为您提供了在Microsoft ADO.NET应用程序中实现和获得最佳性能、可伸缩性以及功能的最佳解决方案
advertisement
热点推荐
· Java加密和数字签名编程快速入门
· 在VB6中用命令行为模式控制GUI动作
· Excel图表向导详解
· 浅析各种计算机病毒应对方法
· 2月16日软件精选 春节文章精彩回顾
[正文]

上一页  1 2 3 4 5 6 7 8 9  下一页

  分页

  ADO.NET可以显式控制从数据源中返回什么样的数据,以及在DataSet中本地缓存多少数据。对查询结果的分页没有唯一的答案,但下面有一些设计应用程序时应该考虑的技巧。

  1) 避免使用带有startRecord和maxRecords值的DataAdapter.Fill重载。当以这种方式填充DataSet时,只有maxRecords参数(从startRecord参数标识的记录开始)指定的记录数量用于填充DataSet,但无论如何总是返回完整的查询。这就会引起不必要的处理,用于读取“不需要的”记录;而且为了返回附加记录,会耗尽不必要的服务器资源。

  2) 用于每次只返回一页记录的技术是创建SQL语句,将WHERE子句以及ORDER BY子句和TOP谓词组合起来。此技术取决于存在一种可唯一标识每一行的办法。当浏览下一页记录时,修改WHERE子句使之包含所有唯一标识符大于当前页最后一个唯一标识符的记录。当浏览上一页记录时,修改WHERE子句使之返回所有唯一标识符小于当前页第一个唯一标识符的记录。两种查询都只返回记录的TOP页。当浏览上一页时,需要以降序为结果排序。这将有效地返回查询的最后一页(如果需要,显示之前也许要重新排序结果)。

  3) 另一项每次只返回一页记录的技术是创建SQL语句,将TOP谓词和嵌入式SELECT语句的使用结合在一起。此技术并不依赖于存在一种可唯一标识每一行的办法。使用这项技术的第一步是将所需页的数量与页大小相乘。然后将结果传递给SQL Query的TOP谓词,该查询以升序排列。再将此查询嵌入到另一个查询中,后者从降序排列的嵌入式查询结果中选择TOP页大小。实质上,返回的是嵌入式查询的最后一页。例如,要返回查询结果的第三页(页大小是10),应该书写如下所示的命令:

SELECT TOP 10 * FROM
(SELECT TOP 30 * FROM Customers ORDER BY Id ASC) AS Table1
ORDER BY Id DESC

  注意:从查询中返回的结果页以降序显示。如果需要,应该重新排序。

  1) 如果数据不经常变动,可以在DataSet中本地维护一个记录缓存,以此提高性能。例如,可以在本地DataSet中存储10页有用的数据,并且只有当用户浏览超出缓存第一页和最后一页时,才从数据源中查询新数据。

  用架构填充DataSet

  当用数据填充DataSet时,DataAdapter.Fill方法使用DataSet的现有架构,并使用从SelectCommand返回的数据填充它。如果在DataSet中没有表名与要被填充的表名相匹配,Fill方法就会创建一个表。默认情况下,Fill仅定义列和列类型。

  通过设置DataAdapter的MissingSchemaAction属性,可以重写Fill的默认行为。例如,要让Fill创建一个表架构,并且还包括主键信息、唯一约束、列属性、是否允许为空、最大列长度、只读列和自动增量的列,就要将DataAdapter.MissingSchemaAction指定为MissingSchemaAction.AddWithKey。或者,在调用DataAdapter.Fill前,可以调用DataAdapter.FillSchema来确保当填充DataSet时架构已到位。

  对FillSchema的调用会产生一个到服务器的额外行程,用于检索附加架构信息。为了获得最佳性能,需要在调用Fill之前指定DataSet的架构,或者设置DataAdapter的MissingSchemaAction。


上一页  1 2 3 4 5 6 7 8 9  下一页

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • ADO.NET实用技巧两则
  • DataSet的数据并发异常处理
  • 使用ADO.NET设计数据库应用程序
  • 中兴携手阿尔卡特 全球逐鹿CDMA
  • 用友总裁王文京:誓将ERP变成“大众消费”
  • 香港消费者委员会:数码相机最贵未必最好
  • 外电称中兴正评估西门子手机业务 或能并购
  • 国信办督战八大行业灾难备份 将出台国家标准
  • 中国IT企业走进欧盟 搭第六框架计划直通车
  • 美邦银行用户注意 警惕新型“钓鱼”邮件
  • 微软三年时间磨出新IE 具有更强大安全性能
  • Advertisement