如何正确理解和使用Command、Connection和 Recordset三个对象?
2012-03-25 15:19
525 查看
我知道它们都是连接数据库的“好手”,但在编程的具体应用中应该如何正确地使用它们呢?
下面我们简要介绍一下它们的功能和应用范围,以及相互之间的关系:
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对象
我们用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查询保持局部未定义,使我们不必在每次重新发出查询时重新建立查询。
----转自网上。
相关文章推荐
- ADO中最重要的对象有三个:Connection、Recordset和Command
- VC++下使用ADO操作数据库的智能指针_ConnectionPtr、_RecordsetPtr、_CommandPtr的方法
- 如何理解并正确使用python中的self init
- [ADO&VC一]使用ADO智能指针_ConnectionPtr,_CommandPtr及_RecordsetPtr
- 如何理解并正确使用MySql索引
- DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射
- VC++下使用ADO操作数据库的智能指针_ConnectionPtr、_RecordsetPtr、_CommandPtr的方法
- 如何理解es6语法的,对象前面加三个点(...) 对象的解构赋值和扩展
- VC++下使用ADO操作数据库的智能指针_ConnectionPtr、_RecordsetPtr、_CommandPtr的方法
- request和response对象(疑问:为什么servlet和jsp中可以直接使用req和res对象?如何理解内置的含义?)
- VC++下使用ADO操作数据库的智能指针_ConnectionPtr、_RecordsetPtr、_CommandPtr的方法
- 如何理解并正确使用MySql索引
- 如何正确的理解使用posix1提供的信号量
- request和response对象(疑问:为什么servlet和jsp中可以直接使用req和res对象?如何理解内置的含义?)
- Value Object(值对象)如何使用 EF 进行正确映射
- 如何在ado中使用connection 对象?
- 如何理解并正确使用python中的self
- 如何理解并正确使用MySQL索引
- 使用JDBC过程中如何正确关闭connection
- 如何理解并正确使用MySql索引