这是因为它们强制COM在运行时(而不是在编译时)解析对Value属性的引用,每一次对该对象的引用都要求有一系列类似的,ADO.NET语句还进行了重新设计,从而向开发人员提供对ADO.NET语句组件的直接访问。
查询结果记录发送到客户端之后,客户端应用程序可能需要相当可观的时间去处理结果集。每一种体系(客户机/服务器,多层体系中的中间层,以及ASP)都为优化这个阶段的代码提供了相应的技术。下面是几个能够显著改善性能的技巧。 #t#
我在代码中看到最多的错误之一是:在引用Recordset Field.Value的时候,使用延迟绑定(Late Binding)。由于代码需要频繁地引用Value属性,而且通常要引用的Field对象有很多,本文前面提到的倍数因子将起到重要影响——因此,ADO.NET语句所有这里介绍的技巧能够显著地改善性能。
一些开发者使用延迟绑定技术的原因在于,他们想要明确地标识出SELECT语句选择了哪些行。为了这个目标,许多人使用了用引号包围字符串的做法。例如,为了引用记录集RS字段集合中的“Cows”字段,你可能使用:
- RS("Cows") 或者: RS.Fields("Cows").Value
后面这种方法显式地引用了记录集内Fields集合中指定成员的Value属性。ADO.NET语句这种方法要稍微快一点,而且当你把这些代码向Visual Basic.NET迁移时,它的向上兼容性也要好一些。上述方法的一种变化是使用感叹号(!)操作符:
- RS!Cows
与先行绑定(Early-Binding)相比,采用上述方法时COM进行解析的时间要长得多,ADO.NET语句这是因为它们强制COM在运行时(而不是在编译时)解析对Value属性的引用,每一次对该对象的引用都要求有一系列类似的、后台进行的查找过程。
然而,使用延迟绑定时,不存在代码引用的是哪一个列这类问题。ADO.NET语句如果你完全按照下列方式编写代码。