ADO 常见问题回答-1

modico
Q1: 哪里可以得到最新版本的ADO?

Q2: 为什么Recordset.RecordCount的值总是"-1"?
    默认地,ADO创建一个光标类型(CursorType)为只向前(adOpenForwardOnly)的服务器端的记录集。这个光标不支持RecordCount属性。
    如果你希望得到正确的RecordCount值,就要设置一个不是forward-only的光标类型(比如:adOpenKeyset或 adOpenStatic)。使用动态光标(adOpenDynamic)也没有用,因为这时记录数可能会改变。
    如果你创建了一个客户端(adUseClient)的记录集,ADO自动设置光标类型为静态光标(adOpenStatic),因此RecordCount总是正确的。
    要得到更多信息,参看微软知识库文章Q194973

Q3: 我想创建一个可更新的数据集,却总是得到一个只读的,为什么?
    默认地,记录集的锁定类型(LockType)设置为只读(adLockReadOnly)。要创建一个可更新的记录集,在调用Recordset.Open之前你必须设置LockType为adLockPessimistic,adLockOptimistic或adLockBatchOptimistic
    Recordset.Execute和Command.Execute调用总是返回一个只读的集,即使你提前设置了LockType。因此对一个可更新的记录集要使用Recordset.Open以及设置LockType为不是adLockReadOnly的值。
    如果LockType=adLockOptimistic,则用Update调用把更改存回数据库。
    如果LockType=adLockBatchOptimistic,则用UpdateBatch调用把更改存回数据库。注意:此时Update调用只是更新了本地数据集(local recordset)而不是数据库。

Q4: 请问有没有一个CAB文件可以用来重分发(redistribute)ADO的?
    你必须使用MDAC typical redistribution 文件(MDAC_TYP.EXE)来安装MDAC。你可以使用VB的Package and Deployment Wizard把MDAC_TYP.EXE放进一个CAB文件(Q189671)。
    当安装MDAC时记住以下几条:
    1) 在NT机子上,你必须以管理员权限(Q177514)登录。在MDAC_TYP.EXE运行之后,重启动,再次以管理员权限登录以使安装生效。
    2) 在Win95上,安装MDAC2.X之前要先安装DCOM95(Q191094),需要重启。
    为解决以上的限制,可以安装IE5.0,附带了MDAC2.1(只有核心,无ODBC Drivers和OLE DB Providers)。如果你使用RDS,这是很好的,因为RDS使用远程机子上的ODBC Drivers和OLE DB Provider。然而如果要在本地使用,这还是不行。
    注意:IE5.0在Win95机子上安装MDAC2.1前先安装DCOM95。
    注意:Windows 2000不需安装MDAC,因为现在MDAC2.5已经是操作系统的一部分了。
    要得到更多信息,参考:
    Q232060 - HOWTO: MDAC Setup Troubleshooting Guide

※编辑: modico (modico) 于 2000-04-10 14:40:04 在 [202.117.82.2] 编辑本文

欲求无限
立地成佛
.
有时候
交谈变得空洞
沉默却像沟通
modico
Q5: 我如何知道我机子上安装的MDAC的版本是多少的?
    看msdadc.dll文件的版本

    MDAC versionmsdadc.dll
    MDAC 1.5c1.50.3506.00
    MDAC 2.02.00.3002.4
    MDAC 2.0 SP1 / SP22.00.3002.23
    MDAC 2.1.0.3513.2 (SQL)2.10.3513.0
    MDAC 2.1.1.3711.6 (IE 5)2.10.3711.2
    MDAC 2.1.1.3711.11 (GA)2.10.3711.2
    MDAC 2.1.2.4202.3 (GA) SP22.10.4202.0

    或者用组件检查器,可在OpenLab数据下载中心找到。

Q6: 我怎么搜索微软的ADO知识库文档?
    访问微软的MSDN在线支持网站。点击"Advance Search"链接。然后选择"ActiveX Data Objects"并输入关键字搜索。
    你也可以查看一份"已编译的"清单,MDAC的微软知识库文章,点这里

Q7: 是否可能用编程的方法创建一个有层次的记录集?
    可以。在连接串里指定Provider为"msdatashape",Data Provider为"none"。
    比如:"provider=msdatashape;data provider=none"
    要得到更多信息,参看下列微软知识库文章:
    Q196029 - HOWTO: Create Hierarchical Recordsets Programmatically

Q8: 调用存储过程时,输出参数总是为空值,为什么?
    当使用服务器端(adUseServer)的光标位置(cursor location)时,ADO直到返回的记录集关闭后才在输出参数中赋值。
    如果你需要在记录集关闭之前使用输出参数中的值,请用客户端(adUseClient)的光标。
    要得到更多信息,参看下列微软知识库文章:
    Q224591 - PRB: SQL Server Stored Procedure's Out Parameters Can Return Incorrect Values

欲求无限
立地成佛
.
有时候
交谈变得空洞
沉默却像沟通