简析Visual C++中的活动数据对象
简析Visual C++中的活动数据对象 |
程序运行效果截图: |
摘 要: 本文简要介绍了微软的活动数据对象(ADO)模型,结合实例阐述了在Visual C++环境下使用ADO操纵数据库的基本步骤,分析ADO的特点及与开放式数据库连接(ODBC)的差异与应用前景。 左图:ADO对象模型 关键词: 活动数据对象 数据库 Visual C++ 1 ADO是微软整个COM战略体系中的一个组成部分 活动数据对象(ADO)是一组由微软提供的COM组件。 ADO建立在微软所提倡的COM体系结构之上,它的所有接口都是自动化接口,因此在C++、VisualBasic、Delphi等支持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 (3) 调用CoInitialize初始化COM ::CoInitialize(NULL); (4) 声明ADO的Connection对象指针和Recordset对象指针并初始化。(类型名在 msado15.dll中已定义) 例: _ConnectionPtr pConnection1 = NULL; (5) 定义CADORecordBinding派生类的实例及其Bind接口指针。 例: CIntlive m_intdata; (6) 产生Connection对象实例和Record set对象实例。 例: pConnection1.CreateInstance(_uuidof(Connection)); (7) 连接到数据库并打开Record set对象,其中open函数的参数的使用方法可参见微软MSDN中ADO 相应对象参数的Basic描述。 例: PConnection1->Open("driver={SQL server};server=servera;uid=sa;pwd=;database=pubs","","",NULL); (8) 将CADORecordBinding派生类的实例联编到Record set对象的Bind接口。 例: RstADOBind1->BindToRecordset(&m_intdata); (9) 对Record set对象实例进行操作。操作方法可参见微软MSDN中ADO Record set对象相应方法的Basic描述。 例: rstADO1->Move Next(); //移动游标到下一条记录 (10) 关闭Record set对象并释放Bind接口。 例: RstADO1->Close(); (11) 关闭连接 pConnection1->Close(); (12) 调用CoUnitialize释放COM资源 ::CoUninitialize(); 5 结论 作为ODBC的替代产品,ADO确实有其过人之处。由于ADO数据源几乎覆盖了目前常见的数据源类型,对于ODBC所不支持的数据源,ADO无疑是唯一的选择。而ADO的批更新功能,更是网络环境下大数据量更新应用的重要因素。由于ADO缺乏大量的第三方厂商的支持,使得ADO目前远不如ODBC普及,但其面向对象的特性将使ADO具有比较广阔的发展前景。 |
简析Visual C++中的活动数据对象相关推荐
- 计算机网络路由器方面的论文,简析计算机网络问题中路由器故障的论文
1 路由器的概念及基本构成 1.1 路由器的概念 路由器是计算机硬件的一个组成部分,其作为网络设备,起到连接计算机与网络的作用,一实现用户顺利上网,完成所需要的工作内容和休闲娱乐.路由器最初产生于上世 ...
- ICDE-2020 论文简析:空间众包中的预测任务分配 : 一种数据驱动的方法 Predictive Task Assignment in Spatial Crowdsourcing
ICDE-2020 论文简析:空间众包中的预测任务分配:一种数据驱动的方法 Predictive Task Assignment in Spatial Crowdsourcing: A Data-dr ...
- 逻辑思维是运用计算机科学的基础概念,简析计算思维中的思维方式及思维本质...
龙源期刊网 http://doc.docsou.com 简析计算思维中的思维方式及思维本质 作者:张菡 来源:<科学与财富>2020年第01期 摘要:计算思维是运用计算机科学的基础概念求解 ...
- 简析程序化广告中的第三方监测
在程序化广告生态中,对于广告主来说,如何知道哪部分广告投放是无用的,是效果差的呢?又如何根据每次广告投放的数据,去调整优化营销策略呢?这些都离不开广告监测. 第三方监测对广告投放平台来说是不可缺少的基 ...
- java培训教程分享:Java中怎样将数据对象序列化和反序列化?
本期为大家介绍的java培训教程是关于"Java中怎样将数据对象序列化和反序列化?"的内容,相信大家都知道,程序在运行过程中,可能需要将一些数据永久地保存到磁盘上,而数据在Java ...
- vb mysql ado_VB中的ADO数据对象编程详解
ADO是ActiveX Data Objects 的缩写,是一项新的数据库的存取技术 那天听到一位同学说他的女朋友是学新闻的可也学会了数据库,可学计算机的自己却还是不会,总觉得有点汗颜.在各网站的论坛 ...
- 微信小程序js数组中插入“新数据对象”,数据对象中插入“新属性”
动态添加数据对象或数据对象中的属性 动态添加数据对象 此处展示的是自己之前写的一个分页功能中,动态添加数据对象到已有的数组中. var tmpArr = that.data.tickets; tmpA ...
- android读取运动数据权限_Android 10 中身体活动数据的隐私保护
Google Fit是我们在 2015 年推出的一个开放式平台.通过调用平台内置的 Google Fit API,开发者可以为应用添加丰富多样的追踪功能,随时随地记录用户的健康和运动状况.这几年来,越 ...
- 车牌识别软件简析及国内各厂家对比数据
△什么是车牌识别软件 车牌识别软件,安装在PC上即可运行.可完成进出车辆识别抓图和对进出车牌信息进行常规的统计分析,并且支持车牌信息回查,提高管理水平. △车牌识别软件原理 车牌识别是基于计算机视觉和 ...
最新文章
- 小米纵向拓展接力赛 接棒新国货“热水器”
- Cannot change version of project facet Dynamic Web Module to 2.5 问题的解决方法
- 10个精选的颜色选择器Javascript脚本及其jQuery插件
- Linux之VMware Tools显示灰色正确解决办法
- html博客页面实验报告,×××实验报告
- 【嘟嘟早教卡】 小程序源码分享带后台管理
- 目标检测——数据增强的学习笔记
- Android FrameWork——PackageManager框架
- python中不能使用下标运算的是_下列选项中,不能使用下标运算的是() (3.0分)_学小易找答案...
- Visio2016卸载干净,以及同时安装Office2016和Visio2016的方法
- 数据结构中的英文及算法缩写
- python面板数据模型_面板数据模型选择
- Angular设置代理
- 有了HTML5,Flash还能走多远?,互联网营销
- python 身份证实名认证
- 题解 CF1389B 【Array Walk】
- ShaderWeaver使用教程-动画序列帧
- 解决烘焙光照贴图有黑斑
- muduo源码分析2——Singleton分析
- 谷歌服务,想说爱你不容易
热门文章
- Doc2Vec训练相似文章识别模型
- 如何评价一个产品经理工作做的好坏?
- B端数据表格设计实战指南(建议收藏)
- jsp 跳到servlet路径_请问如何从jsp中跳到servlet中?
- 如何使柱状图左右展示_Excel多次层柱状图,让数据展示更清晰,简单五步就完成...
- 《大数据》2020年第6期目次摘要
- 互联网环境下分布式事务处理系统现状与趋势
- 作者:杜军平(1963-),女,博士,北京邮电大学计算机学院教授、博士生导师...
- 华岗(1977-),男,博士,宁波市智慧城市规划标准发展研究院副研究员。
- 【项目管理】工作分解结构WBS