【 tulaoshi.com - vb 】
作为微软旗下一款优秀的RAD工具,VB在数据库应用开发方面的能力十分强大。微软设计了多种数据库访问方法,下面通过对VB访问数据库的多种技术进行深入剖析,并总结出实际开发中的几点经验。希望能够对那VB的初学者有所帮助。(注意,文中所有的描述均在Windows 2000 professional和Visual Basic 6.0的环境下进行的)
一. DAO、RDO、ODBC和ADO 在VB的开发环境中,可以使用三种数据库访问方式,它们分别是:数据访问对象(DAO)、远程数据对象(RDO)和ADO对象模型。
DAO:
数据访问对象是用来显露了Microsoft Jet数据库引擎(最早是给Microsoft Access 所使用,现在已经支持其它数据库),并允许开发者通过ODBC直接连接到其他数据库一样,直接连接到 Access 表。DAO 最适用于单系统应用程序或在小范围本地分布使用。其内部已经对Jet数据库的访问进行了加速优化,而且其使用起来也是很方便的。所以如果数据库是Access数据库且是本地使用的话,建议使用这种访问方式。
VB已经把DAO模型封装成了Data控件,分别设置相应的DatabaseName属性和RecordSource属性就可以将Data控件与数据库中的记录源连接起来了。以后就可以使用Data控件来对数据库进行操作。
RDO RDO(Remote Data Objects)远程数据对象是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAO style组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被证明是许多SQL Server、Oracle 以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。
和DAO一样,在VB中也把其封装为RDO控件了,其使用方法与DAO控件的使用方法完全一样。
ODBC ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
一个完整的ODBC由下列几个部件组成:
1. 应用程序(Application)
ODBC管理器(Administrator)。该程序位于Windows 95控制面板(Control Panel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。
驱动程序管理器(Driver Manager)。驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。
2. ODBC API
ODBC 驱动程序。是一些DLL,提供了ODBC和数据库之间的接口。
数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。
ODBC连接目前仅仅限于关系型数据库,对于其他数据源比如EXCEL、文本文件都不能进行访问,而且有很多DBMS(数据库管理系统)都不能充分的支持其所有的功能。相比之下,OLEDB可以存取任何形式的数据,所以其功能是相当的强大,它也指导了目前技术发展的方向。
ADO ADO(ActiveX Data Object)是DAO/RDO的后继产物。ADO 2.0在功能上与RDO更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO"扩展"了DAO和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。
作为最新的数据库访问模式,ADO的使用也是简单易用,所以微软已经明确表示今后把重点放在ADO上,对DAO/RDO不再作升级,所以ADO已经成为了当前数据库开发的主流。
ADO涉及的数据存储有DSN(数据源名称)、ODBC(开放式数据连接)以及OLE DB三种方式。后面的例程将详细讲解这三种方式的具体访问实现。
要使用ADO,必须清楚ADO的对象层次结构,其大体上分为以下7个对象层次:
1、 Command 对象:包含关于某个命令,例如查询字符串、参数定义等的信息。Command 对象在功能上和 RDO的rdoQuery 对象相似。
2、 Connection 对