如何正确理解和使用CommandConnection和Recordset三个对象.docx

上传人:b****7 文档编号:10516423 上传时间:2023-02-17 格式:DOCX 页数:11 大小:20.92KB
下载 相关 举报
如何正确理解和使用CommandConnection和Recordset三个对象.docx_第1页
第1页 / 共11页
如何正确理解和使用CommandConnection和Recordset三个对象.docx_第2页
第2页 / 共11页
如何正确理解和使用CommandConnection和Recordset三个对象.docx_第3页
第3页 / 共11页
如何正确理解和使用CommandConnection和Recordset三个对象.docx_第4页
第4页 / 共11页
如何正确理解和使用CommandConnection和Recordset三个对象.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

如何正确理解和使用CommandConnection和Recordset三个对象.docx

《如何正确理解和使用CommandConnection和Recordset三个对象.docx》由会员分享,可在线阅读,更多相关《如何正确理解和使用CommandConnection和Recordset三个对象.docx(11页珍藏版)》请在冰豆网上搜索。

如何正确理解和使用CommandConnection和Recordset三个对象.docx

如何正确理解和使用CommandConnection和Recordset三个对象

如何正确理解和使用Command、Connection和Recordset三个对象?

我知道它们都是连接数据库的“好手”,但在编程的具体应用中应该如何正确地使用它们呢?

下面我们简要介绍一下它们的功能和应用范围,以及相互之间的关系:

Connection对象

我们用ADO提供的Connection对象来和数据库源建立连接,可以使用它建立和管理应用程序和ODBC数据库之间的连接(必须先应创建Connection对象)。

Connection对象具有各种属性和方法,我们还可以用它们打开和关闭数据库连接,并且发出查询请求来更新信息。

Recordset对象

尽管Connection对象简化了连接数据库和查询任务,但检索和显示数据库信息的Connection对象不能用于创建脚本,必须在知道已对数据库作出的更改后,才能使用查询实现更改。

因此,对于检索数据、检查结果、更改数据库,ADO提供了Recordset对象。

它可以根据我们的查询限制,检索并且显示一组数据库的记录,并且,Recordset对象保持查询返回的记录的位置,允许一次一项逐步扫描结果。

我们还可以根据Recordset对象的指针类型属性设置来滚动和更新记录。

数据库指针可以在一组记录中定位到特定的项,还可以用于检索和检查记录,然后在这些记录的基础上执行操作。

如可以用CursorType和CursorLocation属性设置指针的类型,将结果返回给客户端应用程序(结果通常保留在数据库服务器上)并显示其他用户对数据库的最后一次更改。

可以看出,一个成功的数据库应用程序需要用Connection对象建立连接,并使用Recordset对象处理返回的数据才能完成。

这样,我们几乎可以开发出执行任何数据处理任务的数据库应用程序。

另外,如果我们需要在连接尝试失败之前指定等待的时间,可以使用Connection对象来设置属性。

但如果仅仅想用ADO默认的连接属性来建立连接,我们就应该使用Recordset对象的Open方法来建立,这时,必须使用Connection对象来保证连接安全。

Command对象

Command对象用来改善查询。

通过它,我们可以象用上面两个对象那样执行查询。

它们唯一的不同之处,在于用Command对象,可以在数据库源上准备、编译我们的查询,并且可以反复使用一组不同的值来发出查询。

显然,这种方式的编译查询的长处是可最大程度地减少向现有查询重复发出修改的请求所需的时间。

另,我们还可以在执行之前通过查询的可变部分的选项使SQL查询保持局部未定义,使我们不必在每次重新发出查询时重新建立查询。

 

Connection,recordset,command 这三个在执行SQL语句(2007-12-259:

48:

00)

Open 方法 (ADO Connection) 

        

  

 打开到数据源的连接。

 

  

 语法 

  

 connection.Open ConnectionString, UserID, Password, Options 

  

 参数 

  

 ConnectionString   可选,字符串,包含连接信息。

参阅 ConnectionString 属性可获得有效设置的详细信息。

 

  

 UserID   可选,字符串,包含建立连接时所使用用户名。

 

  

 Password   可选,字符串,包含建立连接时所使用密码。

 

  

 Options   可选,ConnectOptionEnum 值。

决定该方法是在连接建立之后(异步)还是连接建立之前(同步)返回。

可以是如下某个常量:

 

  

 常量 说明  

 adConnectUnspecified (默认)同步打开连接。

  

 adAsyncConnect 异步打开连接。

ConnectComplete 事件可以用于决定连接何时可用。

  

  

  

  

 说明 

  

 使用 Connection 对象的 Open 方法可建立到数据源的物理连接。

在该方法成功完成后连接是活跃的,可以对它发出命令并且处理结果。

 

  

 使用可选的 ConnectionString 参数指定连接字符串,它包含由分号分隔的一系列 argument = value 语句。

ConnectionString 属性自动继承用于 ConnectionString 参数的值,因此可在打开之前设置 Connection 对象的 ConnectionString 属性,或在 Open 方法调用时使用 ConnectionString 参数设置或覆盖当前连接参数。

 

  

 如果在 ConnectionString 参数和可选的 UserID 及 Password 参数中传送用户和密码信息,那么 UserID 和 Password 参数将覆盖 ConnectionString 中指定的值。

 

  

 在对打开的 Connection 的操作结束后,可使用 Close 方法释放所有关联的系统资源。

关闭对象并非将它从内存中删除;可以更改它的属性设置并在以后再次使用 Open 方法打开它。

要将对象完全从内存中删除,可将对象变量设置为 Nothing。

 

  

 远程数据服务用法    当在客户端的 Connection 对象上使用 Open 方法时,在 Connection 对象上打开 Recordset 之前 Open 方法其实并未建立到服务器的连接。

 

  

 ///////////////////////////////////////////////////////////////////////////////// 

  

 Open 方法 (ADO Recordset) 

        

  

 打开游标。

 

  

 语法 

  

 recordset.Open Source, ActiveConnection, CursorType, LockType, Options 

  

 参数 

  

 Source   可选,变体型,计算 Command 对象的变量名、SQL 语句、表名、存储过程调用或持久 Recordset 文件名。

 

  

 ActiveConnection   可选。

变体型,计算有效 Connection 对象变量名;或字符串,包含 ConnectionString 参数。

 

  

 CursorType   可选,CursorTypeEnum 值,确定提供者打开 Recordset 时应该使用的游标类型。

可为下列常量之一(参阅 CursorType 属性可获得这些设置的定义)。

 

  

 常量 说明  

 AdOpenForwardOnly (默认值)打开仅向前类型游标。

  

 AdOpenKeyset 打开键集类型游标。

  

 AdOpenDynamic 打开动态类型游标。

  

 AdOpenStatic 打开静态类型游标。

  

  

  

  

 LockType   可选。

确定提供者打开 Recordset 时应该使用的锁定(并发)类型的 LockTypeEnum 值,可为下列常量之一(参见 LockType 属性可获得详细信息)。

 

  

 常量 说明  

 AdLockReadOnly (默认值)只读 — 不能改变数据。

  

 AdLockPessimistic 保守式锁定(逐个) — 提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录。

  

 AdLockOptimistic 开放式锁定(逐个) — 提供者使用开放式锁定,只在调用Update 方法时才锁定记录。

  

 AdLockBatchOptimistic 开放式批更新—用于批更新模式(与立即更新模式相对)。

  

  

  

  

 Options   可选,长整型值,用于指示提供者如何计算 Source 参数(如果它代表的不是 Command 对象),或从以前保存 Recordset 的文件中恢复 Recordset。

可为下列常量之一(参见 CommandType 属性可获得该列表中前五个常量的详细说明)。

 

  

 常量 说明  

 adCmdText 指示提供者应该将 Source 作为命令的文本定义来计算。

  

 adCmdTable 指示 ADO 生成 SQL 查询以便从在 Source 中命名的表中返回所有行。

  

 adCmdTableDirect 指示提供者更改从在 Source 中命名的表中返回所有行。

  

 adCmdStoredProc 指示提供者应该将 Source 视为存储过程。

  

 adCmdUnknown 指示 Source 参数中的命令类型为未知。

  

 adCmdFile 指示应从在 Source 中命名的文件中恢复保留(保存的)Recordset。

  

 adAsyncExecute 指示应异步执行 Source。

  

 adAsyncFetch 指示在提取 Initial Fetch Size 属性中指定的初始数量后,应该异步提取所有剩余的行。

如果所需的行尚未提取,主要的线程将被堵塞直到行重新可用。

  

 adAsyncFetchNonBlocking 指示主要线程在提取期间从未堵塞。

如果所请求的行尚未提取,当前行自动移到文件末尾。

  

  

  

  

 说明 

  

 使用 Recordset 对象的 Open 方法可打开代表基本表、查询结果或者以前保存的 Recordset 中记录的游标。

 

  

 使用可选的 Source 参数指定使用下列内容之一的数据源:

Command 对象变量、SQL 语句、存储过程、表名或完整的文件路径名。

 

  

 如果 Source 是文件路径名,它可以是完整路径(“c:

\dir\file.rst”)、相对路径(“..\file.rst”)或 URL(“http:

//files/file.rst”)。

 

  

 ActiveConnection 参数对应于 ActiveConnection 属性,并指定在哪个连接中打开 Recordset 对象。

如果传送该参数的连接定义,则 ADO 使用指定的参数打开新连接。

可以在打开 Recordset 之后更改该属性的值以便将更新发送到其他提供者。

或者可以将该属性设置为 Nothing(在 Microsoft Visual Basic 中)以便将 Recordset 与所有提供者断开。

 

  

 对于直接对应于 Recordset 对象属性的参数(Source、CursorType 和 LockType),参数和属性的关系如下:

  

  

 在 Recordset 对象打开之前属性是读/写。

 

  

  

 除非在执行 Open 方法时传送相应的参数,否则将使用属性设置。

如果传送参数,则它将覆盖相应的属性设置,并且用参数值更新属性设置。

 

  

  

 在打开 Recordset 对象后,这些属性将变为只读。

 

 注意   对于其 Source 属性被设置为有效 Command 对象的 Recordset 对象,即使 Recordset 对象没有打开,ActiveConnection 属性也是只读的。

  

  

 如果在 Source 参数中传送 Command 对象并且同时传递 ActiveConnection 参数,那么将产生错误。

Command 对象的 ActiveConnection 属性必须已经设置为有效的 Connection 对象或者连接字符串。

 

  

 如果在 Source 参数中传送的不是 Command 对象,那么可以使用 Options 参数优化对 Source 参数的计算。

如果没有定义 Options 则性能将会降低,原因是 ADO 必须调用提供者以确定参数是否为 SQL 语句、存储过程或表名。

如果已确定所用的 Source 类型,则可以设置 Options 参数以指示 ADO 直接跳到相关的代码。

如果 Options 参数不匹配 Source 类型,将产生错误。

 

  

 如果不存在与 Recordset 关联的连接,Options 参数的默认值将为 adCmdFile。

这是持久 Recordset 对象的典型情况。

 

  

 如果数据源没有返回记录,那么提供者将 BOF 和 EOF 属性同时设置为 True,并且不定义当前记录位置。

如果游标类型允许,仍然可以将新数据添加到该空 Recordset 对象。

 

  

 在打开的 Recordset 对象上完成操作时,可使用 Close 方法释放任何相关的系统资源。

关闭对象并非将它从内存中删除,可以更改它的属性设置并且在以后使用 Open 方法再次将其打开。

要将对象从内存中完全删除,可将对象变量设置为 Nothing。

 

  

 在设置 ActiveConnection 属性之前调用不带操作数的 Open,可通过将字段追加到 Recordset Fields 集合创建 Recordset 的实例。

 

  

 如果已经将 CursorLocation 属性设置为 adUseClient,就可以采用两种途径之一异步检索行。

建议使用的方法是将 Options 设置为 adAsyncFetch。

或者,可以使用在 Properties 集合中的“异步行集合处理”动态属性,但如果未将 Options 参数设置为 adAsyncFetch,则可能丢失相关的被检索事件。

 

  

 注意   在 MSRemote 提供者中的背景提取仅能通过 Open 方法的 Options 参数得到支持。

  

Execute 方法 (ADO Command) 

        

  

 执行在 CommandText 属性中指定的查询、SQL 语句或存储过程。

 

  

 语法 

  

 对于按行返回的 Command:

 

  

 Set recordset = command.Execute( RecordsAffected, Parameters, Options ) 

  

 对于非按行返回的 Command:

 

  

 command.Execute RecordsAffected, Parameters, Options 

  

 返回值 

  

 返回 Recordset 对象引用。

 

  

 参数 

  

 RecordsAffected   可选,长整型变量,提供者向其返回操作所影响的记录数目。

RecordsAffected 参数仅应用于操作查询或存储过程。

RecordsAffected 不返回由返回结果的查询或存储过程所返回的记录数目。

详细信息,请使用 RecordCount 属性。

 

  

 Parameters   可选,变体型数组,使用 SQL 语句传送的参数值。

(用该参数传送时输出参数将不返回正确值。

) 

  

 Options   可选,长整型值,指示提供者如何计算 Command 对象的 CommandText 属性。

该值可为下列常量之一:

 

  

 常量 说明  

 AdCmdText 指示提供者应按命令的文本定义(如 SQL 语句)来计算 CommandText。

  

 AdCmdTable 指示 ADO 应生成 SQL 查询以便从 CommandText 命名的表中返回所有行。

  

 AdCmdTableDirect 指示提供者应从 CommandText 命名的表中返回所有行。

  

 AdCmdStoredProc 指示提供者应按存储过程计算 CommandText。

  

 AdCmdUnknown 指示 CommandText 中的命令类型未知。

  

 adAsyncExecute 指示命令应异步执行。

  

 adAsyncFetch 指示对由 CacheSize 属性指定的初始数量之后的剩余行应使用异步提取。

  

  

  

  

 本列表中前 4 个常量的详细说明请参见 CommandType 属性。

 

  

 说明 

  

 使用 Command 对象的 Execute 方法可执行在对象的 CommandText 属性中指定的查询。

如果 CommandText 属性指定按行返回查询,执行所产生的任何结果都将存储在新的 Recordset 对象中。

如果该命令不是按行返回查询,则提供者返回关闭的 Recordset 对象。

某些应用程序语言允许忽略该返回值(如果不需要任何 Recordset)。

 

  

 如果查询带有参数,将使用 Command 对象中参数的当前值,除非通过 Execute 调用传送的参数覆盖它们。

可以在调用 Execute 方法时通过省略某些参数的新值来覆盖参数子集。

指定参数的次序与其在方法中被传送的次序相同。

例如,如果有 4 个(或更多)参数并且希望只为第一个和第四个参数传送新值,则可以将 Array(var1,,,var4) 作为 Parameters 参数传送。

 

  

 注意    在 Parameters 参数中传送时输出参数将不返回正确的值。

 

  

 该操作结束后将发出 ExecuteComplete 事件 

  

 /////////////////////////////////////////////////////////////////////// 

  

 Execute 方法 (ADO Connection) 

        

  

 执行指定的查询、SQL 语句、存储过程或特定提供者的文本等内容。

 

  

 语法 

  

 对于非按行返回的命令字符串:

 

  

 connection.Execute CommandText, RecordsAffected, Options  

  

 对于按行返回的命令字符串:

 

  

 Set recordset = connection.Execute (CommandText, RecordsAffected, Options) 

  

 返回值 

  

 返回 Recordset 对象引用。

 

  

 参数 

  

 CommandText    字符串,包含要执行的 SQL 语句、表名、存储过程或特定提供者的文本。

 

  

 RecordsAffected    可选,长整型变量,提供者向其返回操作所影响的记录数目。

 

  

 Options    可选,长整型值,指示提供者应如何计算 CommandText 参数,可为下列值:

 

  

 常量 说明  

 AdCmdText 指示提供者应按命令的文本定义计算 CommandText。

  

 AdCmdTable 指示 ADO 应生成 SQL 查询以便从 CommandText 命名的表中返回所有行。

  

 AdCmdTableDirect 指示提供者应从 CommandText 命名的表中返回所有行。

  

 AdCmdTable 指示提供者应按表名计算 CommandText。

  

 AdCmdStoredProc 指示提供者应按存储过程计算 CommandText。

  

 AdCmdUnknown 指示 CommandText 参数中的命令类型未知。

  

 adAsyncExecute 指示命令应该异步执行。

  

 adAsyncFetch 指示对在 CacheSize 属性指定的初始数量之后的剩余行使用异步提取。

  

  

  

  

 本列表中前 4 个常量的详细说明请参见 CommandType 属性。

 

  

 说明 

  

 使用 Connection 对象的 Execute 方法,可执行任何在指定连接的 CommandText 参

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1