预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

2003年青海师范大学学报(自然科学版)2003 第3期JournalofQinghaiNormalUniversity(NaturalScience)No.3 在VC++中基于ADO组件的数据库编程技术 昝风彪 (青海民族学院计算机系,青海西宁810007) 摘要:利用ADO组件提供的对象及其接口,更容易实现数据库应用程序的升级和协同开发。本文介绍了ADO组件模型及 编程模块,探讨了在VC++中利用组件来开发数据库应用程序的技术。 关键词:ADO组件;COM;数据库 中图分类号:TP311.13文献标识码:A文章编号:1001-7542(2003)03-0071-04 在数据库编程中已经有象ODBC、OLEDB、DAO等访问技术,但是利用ADO组件提供的对象及其接 口,实现更高层次的组件封装,以实现更加具体的功能,将组件的可操作性提高到新的水平。 1ADO组件概述 1.1COM组件原理 COM是一种以组件为发布单元的对象模型,这种模型使多种软件组件可以通过一种通用的方式进 行交互。COM提供了组件之间进行交互的规范,也提供了实现交互的环境,因为组件对象之间交互的 规范不依赖于任何特定的语言,所以COM也是不同语言协作开发的一种标准。 1.2ADO组件模型 ADO是采用客户/服务器体系结构的COM模型,对象和客户之间的相互作用是作为客户/服务器 模型里的元素展开的,ADO组件同客户程序的协作方式有进程内协作和进程外协作,而进程内协作是 组件与客户程序在同一个组件内进行,拥有共同的地址空间,其效率与同一进程里的任何C++函数没 有区别,而进程外协作是组件运行在独立地址空间,不与客户程序发生数据共享。 1.3ADO编程模块 ADO包装了DLEDB的许多功能函数并使开发者能够在所有的语言中访问数据源中各种各样的数 据。ADO编程包括制作ADO类库的调用,ADO库按图1层结构而建立的: ●每个ADO连接对象都使用一个数据源名字,一个用户ID和口令来建立 起到一个数据库的连接。 ●通过执行一些SQL语句,这些SQL语句返回一个已含有数据行的数据库 光标,形成每个ADO记录集,可以检查到这些行,也可以通过ADO记录集更新 它们。 ●每个记录集包含一个字段集,这些字段集依次包含一些字段对象,这些字 图1段对象含有已经找到的数据库字段的信息,包括数据类型、长度和存入的值。 2基于ADO组件的客户编程实现 2.1组件支持 ADO组件支持是通过ATL(ActivexTempleteLibrary)来支持的。ATL是一套C++模板库。ATL的优 点是能够建立高效的、灵活的、轻量级的COM组件,ATL应用程序比MFC应用程序更小巧、速度更快。 收稿日期:2002-12-20 作者简介:昝风彪(1971-),男(藏族),青海互助人,青海民族学院计算机系讲师。 ©1994-2009ChinaAcademicJournalElectronicPublishingHouse.Allrightsreserved.http://www.cnki.net 72青海师范大学学报(自然科学版)2003年 通过ATL使COM应用开发尽可能地自动化,摆脱大量的冗余代码。ATL提供的数据库访问COM接口 是对OLEDBAPI的包装,其接口主要有如下几个类:CDataSource、CSession、CCommand、CRowset、CAcces2 sor,用来创建数据源对象、客户程序与供应程序的对话、处理数据等。 2.2编程实现 2.2.1ADO支持 虽然已经有组件支持,但还需要ADO的支持,在组件支持的数据库开发方式中,必须在应用程序的 头文件中包含adoid.h和adoint.h。 2.2.2ADO数据库连接 在使用ADO数据库之前,必须先建立数据库连接,通过ADOConnection界面来完成。先声明ADO2 Connection界面的指针,然后使用CoCreateInstance方法在内存中建立连接。 CComPtr<ADOConnection>m-Conn; CoCreateInstance(CLSID-CADOConnection, NULL, CLSCTX-INPROC-SERVER, IID-IADOConnection, (LPVOID3)&m-Conn); 调用CoCreateInstance函数时COM搜索注册表找到CLSID,并创建一个CADOConnection对象的一个 实例,并通过IID-IADOConnection接口指针引用对象,而参数CLSCTX-INPROC-SERVER指出ADO连接对 象在程序中以DLL方式运行,而不是在单个程序中或甚至在不同的机器中以EXE方式运行。CoCreate2 Instrance函