用VB和RDO访问SQLSERVER

来源:互联网 发布:发牌程序java 编辑:程序博客网 时间:2024/06/06 00:43
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

  远程数据对象(RemoteDataObject,简称RDO)是位于ODBCAPI之上的一个对象模型薄层,它依赖ODBCAPI、选定的ODBC驱动程序以及后端引擎实现大部分的智能和功能,因此短小(大约250K)、快速、强健。RDO具备基本的ODBC处理方法,所以可以直接执行大多数ODBCAPI函数。RDO包含在VB4.0/VB5.0企业版中,由一个动态连接库MSRDO32.DLL实现。当VB版本还只是2.0时,从VB访问MS的手段只有API函数集(VBSQL/DBLib或ODBCAPI)。VB发展到3.0时,其DAO/Jet(Microsoft的数据库引擎)功能非凡,具备面向对象的程序接口,但处理速度尚不尽如人意。另一方面,尽管VBSQL/DBLib、ODBCAPI在速度方面性能很好,但它需要花费很大的精力进行繁琐的工作。当MSSQLSERVER发展到6.0、VB发展到4.0时,开发了新的对象模块,由此产生了RDO,可以访问SQLSERVER、;RDO2.0则是由VB5.0提供的。值得一提的是,它实现了“事件驱动型数据库访问的编程方式”。要讨论RDO,就必然要谈到DAO。DAO/Jet是为了实现从VB访问Access数据库而开发的程序接口(对象)。RDO是从DAO派生出来的,但两者很大的不同在于其数据库模式。DAO是针对[记录(Records)]!和[字段(Fields)],而RDO是作为[行(Rows)]和[列(Columns)]来处理。也就是说DAO是ISAM模式,RDO是关系模式。此外DAO是访问Access的Jet引擎(Jet是ISAM)的接口,而RDO则是访问ODBC的接口。可见,RDO是综合了DAO/Jet、VBSQL/DBLib以及ODBC的优点的对象(Object)。需要强调的是,RDO是包裹着ODBCAPI的一层薄薄的外壳,被成在后台(服务器端)有数据库存在的前提下运行,同时也是针对SQLSERVER和Oracle而特别设计的。RDO的优势在于它完全被集成在VB之中。此外,直接访问SQLSERVER存储过程、完全支持T-SQL、T-SQL调试集成在开发环境中、VisualDatabaseTools的集成化等,也是RDO的长处。

  RDO之后是ADO

  Microsoft公司已经明确宣布今后不会对VBSQL/DBLib进行升级,而ODBCAPI函数一级的编程方式也不为人们所喜爱。RDO自身今后将被以ActiveX技术为基础的ADO(ActiveXDataObjects)所替代。下一个版本中由哪一个作为标准配置还不很明确,但这一发展趋势已经很清楚。为什么需要ADO呢?RDO是以ODBC为基础,而ADO则是基于全新的OLEDB技术。ODBC本身是以SQLSERVER、Oracle等关系数据库作为访问对象;OLEDB则不仅限于此,而将是可以对电子邮件、文本文件、复合文件、数据表等各种各样的数据通过统一的接口进行存取的技术。DAO、RDO当然不会一下子消失,但随着新技术的利用,它们的作用将逐步淡化。

 RDO的对象模块

  要正确地使用RDO,有必要对其对象模块结构加以理解。在RDO的对象和集合中,有很多对数据库的状态和设定进行操作的属性(Property),以及对数据库进行操作的方法(Method)。利用这些,从RDO2.0起就可以开发事件驱动的数据库应用程序。RDO对象与VB中其他对象的概念相同。与VB用的ActiveX控件(以往称为CustomControl或OCX、VBX)相似的是,RDO也带有属性和方法;但同Spread、InputMan等普遍应用的ActiveX控件不同的是,RDO没有自己的用户界面,因而可以和VB标准的Timer控件归为同一类。当然也可以将RDO看作调用ODBCAPI函数,进而对后台数据库操作加以控制的对象。在RDO的属性和方法中,包含了对单个的ODBCAPI函数以及一连串API函数的调用。

  1.RDOEngine对象最初调用RDO对象以及RDC(远程数据控件)时,自动生成RDOEngine对象的附带事件(incident)。RDOEngine用于对RDO全局属性的参数、选项进行设置,是在RDO的阶层结构内处于最上层的对象,包含了所有的其他对象。RDOEngine对象与DAO/Jet不同,虽然被多个应用程序共享,但体现RDOEngine对象的设定值的属性却并不共用,而是在各自的应用程序的程序界面中对其分别加以设定。这些设定值对其他使用RDO以及RDC的应用程序没有任何影响。RDOEngine不是集合的要素,而是重新定义的对象,RDOEngine对象不能被追加作成。1

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>