摘 要:ADO作为一种Microsoft最新型的数据库客户技术,为客户提供了多种形式数据库的高性能访问,功能强大且易于使用。本文基于此简要介绍了ObjectARX开发环境及ADO技术原理,阐述了ObjectARX开发环境下ADO数据库接口技术的应用,并在VC++6.0开发环境下,详细介绍如何实现ADO技术在ObjectARX开发环境中的应用。
关键字:ADO;ObjectARX;应用
1 ObjectARX开发环境及ARX应用程序
ObjectARX开发环境是在AutoLISP 和ADS两种系统的基础上发展出的第三代开发环境,同时也是AutoCAD R13上ARX基础上形成的第二代面向对象的C++编程环境[2]。此外市场上还存在VBA和Visual Lisp等开发环境。Object ARX开发环境的最大优势即在于其为用户使用和扩展AutoCAD提供了十分简便的C++程序设计接口。同时ObjectARX内部嵌带一系列动态链接库,这些库在运行时和AutoCAD处于相同的地址空间,这就使得ObjectARX可以直接调用AutoCAD内部的核心数据库数据和结构。此外,和Visual C++程序相同,ObjectARX开发环境一样可以共享MFC和Windows内部的一切资源,这是由于它的这种开放式特征,使得ObjectARX开发环境的使用范围越来越广。
ARX应用程序就是客户在ObjectARX开发环境下开发的程序。由于在ObjectARX开发环境的支持下,数据对象都会有一个与之相对应的类存在,每个类也都为开发者提供已封装好的不同的属性和使用方法,这种方式为开发者进行程序的检测和二次开发带来很大方便。在ObjectARX的开发环境下,ARX 应用程序不并不是一个单独的进程,而是一个动态连接库,,它可以直接调用AutoCAD的内部代码,数据库数据、几何及图形的造型设计系统,在ARX应用程序运行时,用户可以随时拓展AutoCAD内部类的功能和使用方式,建立区别于AutoCAD系统默认操作方式的新指令。最重要的,在进行ARX应用程序开发时,用户可以很好的借鉴Windows自带的资源,MFC类库中的内容和VC++可视化编程环境,简洁高效地开发出Windows风格十足的ARX应用程序。
2 ADO技术原理
作为一种ActiveX对象,ADO共有两套API编程接口供使用者选择,一种是采用OLE本身的借口,设计时使用不带指针的编程语言,例如用户可以使用VB、VisualLISP或其他脚本语言实现对ADO的访问。另一种接口是通过特定界面,由C++语言提供。ADO是微软数据库的一种新型应用接口,它是在OLE DB 基础上的高层数据库访问方式。通过详细封装OLE DB内容和定义ADO对象, ADO技术极大简化了程序开发的流程和时间。因为ADO的多通道编程接口和多样编程语言选择,所以ADO技术除了可以面向Visual C++外,同时可以面向VB、V3等多种其他应用开发工具。ActiveX控件形式可应用到ADO技术中,而LabWindowdCVI自身是一种遵循COM规范的ActiveX控件,很明显的LabWinowdCVI技术也可应用到ADO技术中。ADO技术的明显优势在于其应用便捷、访问方式灵活、工作速度快、内存占用率低。A DO与 OLE D B之间对象结构相似,但ADO并不完全依赖对象层次,在实际应用中,使用者只需建立和处理需要考虑的对象。以下七种对象共同构成ADO的接口,分别是:Connection对象、Command对象、Recordset对象、Fi elds对象、Parameter对象。Property对象和Error对象。
3 ADO技术在ObjectARX中的实现
由于ADO共有两套API编程接口供使用者选择,这种ADO的“双重界面” 性质也使得用户能够采取两种方式在C++的程序代码中调用ADO。首先用户可以通过添加ADO头文件和OLE DB SDK输入库的方式来获取ADO的功能。在编写源代码时用户需添加ADO 的头文件adoid.h 和adoint.h,并将ADO的输人库adoid.1ib添加至连接器的输入中,通过这种方式使用者即可成功使用ADO对象的实际功能,访问其内部的成员函数。同样用户也可以通过 Visual C + +中的 # impart指令来获取相同的ADO功能,而且通过添加# impart指令调用A DO库,可以使用较少的代码内容,节省工作空间。
Object ARX开发环境为用户提供了十分简便的C++程序设计接口,因此使用者在Object ARX环境中调用ADO技术通常由下列几个步骤构成:
首先用户要完成数据源的建立。想要完成基于数据库的应用程序, 第一就要要建立相应的数据库。用户在实际建立时可以直接参考我们常用到的数据库软件,例如微软的Access,Visual Foxpro, Oracle等数据库。
其次要在程序中调入ADO类型库。在ARX程序编写的最开始的stdAfx.h头文件中添加调用代码:
#include
#import “c:\programe files\system\ado\msado15.dll”\no_namespace\
rename(“EOF”,”adoEOF”)\rename(“EOS”,”adoEOS”)
上述代码中的no_namespace 表明定义的对象不占用名称空间。在实际应用案例中,有些应用程序的对象很有可能与ADO中定义的对象名发生冲突, 因为我们在这里特别开辟一个名称空间。若该名称空间需要被使用, 此语句可修改为re-name_namespace("AdoNS"). Rename语句将ADO中的EOF和EOS修改为adoEOF和adoEOS, 目的就在于防止冲突。其中需要用户注意的是,msa-do15.dll这个文件不是必须要在该目录下,用户需要根据实际情况灵活修改。
再次需要对COM环境进行工作初始化,并使用Connection对象连接数据库。用户在编写前要在DllMain()函数中写入COM库的初始化代码:
extern “C”BOOL WINAPIDLLMain
(HINSTANCE hInstance, DWORD dwReason, )
{
AfxOleInit();
…
}
然后客户就可以使用 Connection、Command对象进行SQL命令的编写和调用, 也可以使用Recordset对象获取结果记录集,以便用户进行查询、处理。
最后在客户使用完毕ADO数据库后,关闭连接释放对象即可完成对ADO库的一次调用。
4 结论
本文对ADO在ObjectARX开发环境中的应用进行了研究,通过在ObjectARX开发环境中应用ADO 模型,可以使用户简洁灵活地完成数据交互,简化语言的编写过程。
参考文献
[1]David Seeppa著,肖火,石钧.葛钧译 ADO缩程技术.北京:清华大学出版社,2001
[2]邵俊昌,李旭东.AutoCAD ObjectAILX200()开发技术指南[M].北京:电子工业出版社,2000