简析Visual C 中的活动数据对象(ado)

2008-02-23 05:33:10来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

程式运行效果截图:



摘 要: 本文简要介绍了微软的活动数据对象(ADO)模型,结合实例阐述了在Visual C 环境下使用ADO操纵数据库的基本步骤,分析ADO的特点及和开放式数据库连接(ODBC)的差异和应用前景。

左图:ADO对象模型

  关键词: 活动数据对象 数据库 Visual C

  1 ADO是微软整个COM战略体系中的一个组成部分

  活动数据对象(ADO)是一组由微软提供的COM组件。 ADO建立在微软所提倡的COM体系结构之上,他的任何接口都是自动化接口,因此在C 、VisualBasicDelphi等支持COM的研发语言中通过接口都能够访问到ADO。ADO通过使用OLE DB这一新技术实现了以相同方式能够访问关系数据库、文本文档、非关系数据库、索引服务器和活跃目录服务等的数据,扩大了应用程式中可使用的数据源范围,从而成为微软整个COM战略体系中访问数据源组件的最好选择,是ODBC的替代产品。



  2 ADO对象模型组成

  和微软的其他数据访问模型DAO和RDO相比,ADO对象模型很精炼,仅由三个主要对象Connection、Command、Recordset和几个辅助对象组成,其相互关系如图所示。Connection对象提供OLE DB数据源和对话对象之间的关联,他通过用户名称和口令来处理用户身份的鉴别,并提供事务处理的支持;他还提供执行方法,从而简化数据源的连接和数据检索的进程。Command对象封装了数据源能够解释的命令,该命令能够是SQL命令、存储过程或底层数据源能够理解的任何内容。Record set用于表示从数据源中返回的表格数据,他封装了记录集合的导航、记录更新、记录删除和新记录的添加等方法,还提供了批量更新记录的能力。其他辅助对象则分别提供封装ADO错误、封装命令参数和封装记录集合的列。

  3 ADO的特点分析

  (1)由于封装了许多底层工作,使用ADO和使用ODBC几乎是相同方便。

  (2) ADO不但具备ODBC的主要功能,而且ADO适用的数据源的范围要大的多。

  (3)在定义ADO记录集变量和数据库表字段绑定类时,需要记录集的字段变量、状态变量和数据库表字段的个数、顺序必须相同。这一点比在FMC中使用ODBC要复杂一些。但在数据库字段和ADO记录集字段变量绑定的宏中,ADO 提供的数据类型要远多于FMC中的RFX(如日期时间类型,在ODBC中只能转换为Cstring类型)。

  (4)ADO允许同一Connection实例下有多个Record set实例。

  (5)ADO允许进行批更新(使用的Update Batch方法),这样将大大减轻网络负担,提高数据库处理效率。

4 ADO在Visual C 中的使用

  利用微软在Micrsoft Studio 6中提供的ADO2,能够在Visual C 中使用ADO接口操纵SQL SERVER数据库。在编译型高级语言中使用ADO,比起在一些脚本语言(如Visual Basic Scropt和JavaScript)中使用ADO要困难一些。

  以下给出一个Visual C 下使用ADO的Connection对象及其Record set对象的基本步骤:

  (1) 使用import指令引入ADO2组件

  例:#import "C:ADOmsado15.dll" no_namespace rename("EOF", "EndOfFile")

  (2) 定义CADORecordBinding 的派生类,用于程式和数据库表字段的交互,该类的定义可参见icrsint.h。

  例:

class CIntlive : public CADORecordBinding
{
public:
DBTIMESTAMP m_datetime; //定义ADO记录集字段变量(和数据库表字段相对应)
long m_key;
long m_value;
long m_quality;
WORD m_stsdatetime; //定义ADO记录集状态变量
WORD m_stskey;
WORD m_stsvalue;
WORD m_stsquality;
BEGIN_ADO_BINDING(CIntlive) //将数据库字段和ADO记录集字段变量绑定
ADO_VARIABLE_LENGTH_ENTRY2(1,adDBTimeStamp,m_datetime,sizeof(m_datetime),m_stsdatetime,true)
ADO_NUMERIC_ENTRY(2,adInteger,m_key,10,0,m_stskey,true)
ADO_NUMERIC_ENTRY(3,adInteger,m_value,10,0,m_stsvalue,true)




标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Visual C ADO数据库编程入门(下)

下一篇: VC用ADO访问数据库全攻略

热门词条
热门标签