代码改变世界

一起谈.NET技术,详细述说ADO超时相关问题介绍

2011-09-01 23:43  狼人:-)  阅读(133)  评论(0编辑  收藏  举报

  在使用连接ADO超时。其混合了函数语言和物件导向程序编制语言,并且完美的适用于编程、算法、技术和探索性开发,因此可以在使用的过程当中感受到趣味性和吸引力。

  使连接ADO超时   
  活动的突然增长可能使数据库服务器变得十分笨拙,大量增加建立数据库连接的时间。结果是,过长的连接延时将降低数据库的性能,用Connection对象的ConnectionTimeout,您可以限制放弃连接尝试并发出错误消息之前应用程序等待的时间。例如,下面的脚本设置ConnectionTimeout属性,在取消连接尝试之前等待20秒:  

Set cn=Server.CreateObject("ADODB.Connection")
cn.ConnectionTimeout
= 20
cn.Open
"FILEDSN=MyDatabase.dsn"

  没有人可以同时阅读大量的数据,象下一页或者无数的分页这样的形式我不知道到底有多少人会去看,因此要提高ADO效率,不能用简单的Timeout来控制,应该是全面的。我建议你多多利用检索表单,结果只出现一定数量就可以了。

  并非是很多记录,而是需对大量的数据进行处理后汇总,一条查询语句经优化后仍需30秒以上,ADO超时而ASP的超时在30秒准时报错,Timeout   我曾经也试过但没有任何效果,我是通过ODBC连接到SQL   Server   7.0   再在ASP中用ADO与ODBC   相联,不知这些数据源是否支持该属性,如果不支持,是否还有其它方法,谢谢您的回复!  

  使用强类型DataSet时,你能给DataSet 的XML大纲定义语言(XSD)作注解以确保强类型DataSet正确的处理空(Null)的引用。空值(nullValue)注释使你能用String.Empty这个特定值代替DBNull、保持了空引用、或者产生一个异常。选择其中的哪个依赖于应用程序的内容,默认情况下遇到空引用将产生一个异常。  

  刷新DataSet中的数据 
  如果你希望使用更新后的值从服务器刷新数据集中的值,使用DataAdapter.Fill。如果主键定义在数据表上,DataAdapter.Fill基于主键匹配新行,并把服务器的数据改成已存在的行。被刷新行的RowState设置为Unchanged,即使在刷新前它被修改过。注意如果给数据表定义了主键,DataAdapter.FillADO超时添加新行可能重复主键值。  

  用于在某个时候只返回一页记录的技术之一是建立一个SQL语句,该语句包含一个WHERE和ORDER BY子句,并有TOP判定。这种技术依赖于识别每个唯一行的方法。当导航到下一页的记录时,修改WHERE子句使它包含所有唯一标识比当前页标识大的记录;

  当导航到前面一页时,修改WHERE子句使它包含所有唯一标识比当前页标识小的记录。对于两种查询都只返回记录的TOP页的记录。当导航到前面一页时需要对记录进行降序排列,这将返回查询的末尾页(如果需要可以在显示前对记录进行重新排序)。 

  另一种技术是建立一个SQL语句包含TOP判定和嵌入的SELECT语句。这种技术不ADO超时是基于唯一的识别每行的方法。使用这种技术的第一步是把页面的大小与想得到的页面数量相乘。接着把该数值传递给SQL查询的TOP判定,并按升序排序。接着把这个查询嵌入另一个查询,该查询从嵌入的查询结果中选择TOP页面大小,按降序排列。本质上返回的是嵌入的查询的末尾页面。