Connection 对象
            Connection 对象代表打开的、与数据源的连接。
说明Connection 对象代表与数据源进行的唯一会话。如果是客户端/服务器数据库系统,该对象可以等价于到服务器的实际网络连接。取决于提供者所支持的功能,Connection 对象的某些集合、方法或属性有可能无效。使用 Connection 对象的集合、方法、和属性可执行下列操作: 在打开连接前使用 ConnectionString、ConnectionTimeout 和 Mode 属性对连接进行配置。
设置 CursorLocation 属性以便调用支持批更新的“客户端游标提供者”。
使用 DefaultDatabase 属性设置连接的默认数据库。
使用 IsolationLevel 属性为在连接上打开的事务设置隔离级别。
使用 Provider 属性指定 OLE DB 提供者。
使用 Open 方法建立到数据源的物理连接。使用 Close 方法将其断开。
使用 Execute 方法执行对连接的命令,并使用 CommandTimeout 属性对执行进行配置。
可使用 BeginTrans、CommitTrans 和 RollbackTrans 方法以及 Attributes 属性管理打开的连接上的事务(如果提供者支持则包括嵌套的事务)。
使用 Errors 集合检查数据源返回的错误。
通过 Version 属性读取使用中的 ADO 执行版本。
使用 OpenSchema 方法获取数据库模式信息。
注意   如果不使用 Command 对象执行查询,请向 Connection 对象的 Execute 方法传送查询字符串。但是,当需要使命令文本具有持久性并重新执行,或使用查询参数的时候,则必须使用 Command 对象。 可以创建独立于先前定义的其他任何对象的 Connection 对象。注意   可以象执行 Connection 对象的本地方法一样执行命令或存储过程。如果要执行命令,可以使用 Command 对象的 Name 属性给命令指定一个名称。将 Command 对象的 ActiveConnection 属性设置为该连接。然后,象发出 Connection 对象的方法一样发出使用命令名称的语句,后面可带任何参数(如果有返回行,则后面带 Recordset 对象)。设置 Recordset 属性以便自定义所产生的记录集。例如:Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
...
cnn.Open "..."
cmd.Name = "yourCommandName"
cmd.ActiveConnection = cnn
...
'命令名称、任意参数、以及可选记录集。
cnn.yourCommandName "parameter", rst要执行存储过程,可以如同发出 Connection 对象的方法一样发出使用存储过程名称的语句,后面可带任何参数。ADO 将对参数类型进行“最佳判断”。例如:Dim cnn As New ADODB.Connection
...
'存储过程名称及任意参数。
cnn.sp_yourStoredProcedureName "parameter"

解决方案 »

  1.   

    CursorLocation 属性
          设置或返回游标服务的位置。设置和返回值设置或返回可设置为以下某个常量的长整型值。常量 说明 
    adUseNone 没有使用游标服务。(该常量已过时并且只为了向后兼容才出现)。 
    adUseClient 使用由本地游标库提供的客户端游标。本地游标服务通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有好处的。AdUseClient 具有向后兼容性,也支持同义的 adUseClientBatch。 
    adUseServer 默认值。使用数据提供者的或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能。 说明该属性允许在可用于提供者的各种游标库中进行选择。通常,可以选择使用客户端游标库或位于服务器上的某个游标库。该属性设置仅对属性已经设置后才建立的连接有影响。更改 CursorLocation 属性不会影响现有的连接。对于 Connection 或关闭的 Recordset 该属性为读/写,而对打开的 Recordset 该属性为只读。由 Execute 方法返回的游标继承该设置。Recordset 将自动从与之关联的连接中继承该设置。远程数据服务用法   当用于客户端 (ADOR) Recordset 或 Connection 对象时,只能将 CursorLocation 属性设置为 adUseClient。
      

  2.   

    Recordset 对象
                Recordset 对象表示的是来自基本表或命令执行结果的记录全集。任何时候,Recordset 对象所指的当前记录均为集合内的单个记录。说明可使用 Recordset 对象操作来自提供者的数据。使用 ADO 时,通过 Recordset 对象可对几乎所有数据进行操作。所有 Recordset 对象均使用记录(行)和字段(列)进行构造。由于提供者所支持的功能不同,某些 Recordset 方法或属性有可能无效。ADOR.Recordset 和 ADODB.Recordset 是用来创建 Recordset 对象的 ProgID。由此产生的 Recordset 对象行为相同,与 ProgID 无关。ADOR.Recordset 随 Microsoft® Internet Explorer 安装,而 ADODB.Recordset 则随 ADO 安装。Recordset 对象的行为受环境(即客户端、服务器、Internet Explorer 等)的影响。这些差异将在属性、方法和事件的“帮助”主题中加以说明。在 ADO 中定义了四种不同的游标类型: 动态游标 — 用于查看其他用户所作的添加、更改和删除,并用于不依赖书签的 Recordset 中各种类型的移动。如果提供者支持,可使用书签。
    键集游标 — 其行为类似动态游标,不同的只是禁止查看其他用户添加的记录,并禁止访问其他用户删除的记录,其他用户所作的数据更改将依然可见。它始终支持书签,因此允许 Recordset 中各种类型的移动。
    静态游标 — 提供记录集合的静态副本以查找数据或生成报告。它始终支持书签,因此允许 Recordset 中各种类型的移动。其他用户所作的添加、更改或删除将不可见。这是打开客户端 (ADOR) Recordset 对象时唯一允许使用的游标类型。
    仅向前游标 — 除仅允许在记录中向前滚动之外,其行为类似静态游标。这样,当需要在 Recordset 中单程移动时就可提高性能。 
    在打开 Recordset 之前设置 CursorType 属性来选择游标类型,或使用 Open 方法传递 CursorType 参数。部分提供者不支持所有游标类型。请检查提供者的文档。如果没有指定游标类型,ADO 将默认打开仅向前游标。如果 CursorLocation 属性被设置为 adUseClient 后打开 Recordset,则在返回的 Recordset 对象中,Field 对象的 UnderlyingValue 属性不可用。对部分提供者(例如 Microsoft ODBC Provider for OLE DB 连同 Microsoft SQL Server),可以通过使用 Open 方法传递连接字符串,根据以前定义的 Connection 对象独立地创建 Recordset 对象。ADO 仍然创建 Connection 对象,但它不将该对象赋给对象变量。不过,如果正在相同的连接上打开多个 Recordset 对象,就应该显式创建和打开 Connection 对象,由此将 Connection 对象赋给对象变量。如果在打开 Recordset 对象时没有使用该对象变量,即使在传递相同连接字符串的情况下,ADO 也将为每个新的 Recordset 创建新的 Connection 对象。可以创建所需数量的 Recordset 对象。打开 Recordset 时,当前记录位于第一个记录(如果有),并且 BOF 和 EOF 属性被设置为 False。如果没有记录,BOF 和 EOF 属性设置是 True。假设提供者支持相关的功能,可以使用 MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法以及 Move 方法,和 AbsolutePosition、AbsolutePage 和 Filter 属性来重新确定当前记录的位置。仅向前 Recordset 对象只支持 MoveNext 方法。当使用 Move 方法访问每个记录(或枚举 Recordset)时,可使用 BOF 和 EOF 属性查看是否移动已经超过了 Recordset 的开始或结尾。Recordset 对象可支持两类更新:立即更新和批更新。使用立即更新,一旦调用 Update 方法,对数据的所有更改将被立即写入基本数据源。也可以使用 AddNew 和 Update 方法将值的数组作为参数传递,同时更新记录的若干字段。如果提供者支持批更新,可以使提供者将多个记录的更改存入缓存,然后使用 UpdateBatch 方法在单个调用中将它们传送给数据库。这种情况应用于使用 AddNew、Update 和 Delete 方法所做的更改。调用 UpdateBatch 方法后,可以使用 Status 属性检查任何数据冲突并加以解决。注意   要执行不使用 Command 对象的查询,应将查询字符串传递给 Recordset 对象的 Open 方法。但是,在想要保持命令文本并重复执行或使用查询参数时,仍然需要 Command 对象。