海纳百川,有容乃大
善于总结,积累软财富
【主题】RecordSet对象使用的经验与教训

  1、RecordSet对象的eof属性

  例如:
    dim rs11,sqlcmd2 
   set rs11=Server.CreateObject("ADODB.RecordSet")
    sqlcmd2="select * from PicTure where PicID =1234"    
    rs11.open sqlcmd2,conn,1,3  
     
   '当查询的记录确定只有1条时,最好使用RecordCount判读,不要使用Eof 。
   'Eof 不准确,有时为true,有时为false
    if (rs11.recordcount=1) then 
         getimgstr=rs11("PicPath") 
   end if 
   
   rs11.close


   说明:ADO帮助文档中说,如果打开没有记录的 Recordset 对象,BOFEOF 属性将设置为 True,而 Recordset 对象的 RecordCount 属性设置为零。打开至少包含一条记录的 Recordset 对象时,第一条记录为当前记录,而 BOFEOF 属性为 False。但在使用中若果有一条记录时,EOF并不总是False。

2、CursorLocation 属性 —设置或返回游标服务的位置   
      
常量 说明
adUseNone 没有使用游标服务。(该常量已过时并且只为了向后兼容才出现)。
adUseClient 使用由本地游标库提供的客户端游标。本地游标服务通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有好处的。AdUseClient 具有向后兼容性,也支持同义的 adUseClientBatch
adUseServer 默认值。使用数据提供者的或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能。

说明:缺省的光标是基于服务器的,数据存储的任务是管理记录,当使用服务器光标建立数据集时,数据存储管理着记录的移动,更新等等。对于客户光标,记录集的内容全部复制给客户,受本地光标服务管理,这就意味着对于客户光标,打开一个具有大量记录的数据集要比使用服务器光标所需的时间长的多。

3、如何打开记录集对象     
     
游标类型选项

Const adOpenForwardOnly = 0 
前向游标,为缺省游标,提供最快的运行性能。用它打开recordset,从对至尾顺序取得所有结果。它不支持向后滚动,只允许在结果间单向移动。 

Const adOpenKeyset = 1 
静态游标,反映第一次打开游标时表中数据的状态,游标无法查明底层表中的数据行是否更新过、删除过或添加了新的数据。不过与只能前移的洲标不同,静态游标可以在结果间前后滚动。 

Const adOpenDynamic = 2 
键盘驱动的游标,可以查询表中底层数据行的某些变化,但不是全部。它特别是可以准确反映数据是否更新过。但它不能查明其它用户是否曾删除过数据行(删除掉的数据行在recordset中会留下空洞)。键盘驱动的游标支持在结果间前后滚动。 

Const adOpenStatic = 3                       
动态游标,是最丰富的游标类型。游标打开时可以查询其他用户对表的任何改动,而且支持滚动。 

加锁类型选项
Const adLockReadOnly = 1 
缺省的上锁类型,只读方式上锁允许多个用户同时读取同样的数据,但不能改变数据。 

Const adLockPessimistic = 2 
以悲观上锁方式打开数据对象。该方式假定在你编辑记录时会有其它用户访问数据。此时一旦你开始编辑记录,其它用户就不能访问该数据。 

Const adLockOptimistic = 3 
以乐观上锁方式打开数据对象。该方式假定在你编辑记录时不会有其它用户访问数据。在完成改变之前,其它用户不能访问该记录。 

Const adLockBatchOptimistic = 4 
执行多行批处理更新时使用这种类型

最后,打开一个记录集时,你可以指定一个Options参数。Options参数标明用来打开记录集的命令字符串的类型。告诉ADO被执行的字符串内容的有关信息有助于高效地执行该命令字符串。

你可以使用下面的常量作为Options参数:

adCMDTable。被执行的字符串包含一个表的名字。 
adCMDText。被执行的字符串包含一个命令文本。 
adCMDStoredProc。被执行的字符串包含一个存储过程名。 
adCMDUnknown。不指定字符串的内容。(这是缺省值。)

在rs.open后面的参数设定。一般建议:
rs.open sql,conn,0,1 顺序遍历,不需要定位跳转,不需要添加删除更新操作,速度最快
rs.open sql,conn,1,3 遍历,可以进行更新操作,但不能进行定位跳转
rs.open sql,conn,2,3 可以进行所有操作,可以跳转

posted on 2007-01-10 17:15  海纳百川  阅读(869)  评论(4编辑  收藏  举报

首页原创.NET区 div1
.NET新手区 div2
精华区 div3
专家区 div4
读书心得区 div5
百度主题实验室
百度主题推广 div7

-->