OLE DB 的概念简单地说,OLE DB
是一种技术标准,其核心内容就是要求对各种各样的数据存储(Da
OLE DB 标准的具体实现是一组C++ API 函数,就像ODBC 标准中的ODBC API 一样,不同的是,OLE DB 的API 是符合COM 标准、基于对象的(ODBC API 则是简单的C API)。使用OLE DB API,可以编写能够访问符合OLE DB 标准的任何数据源的应用程序,也可以编写针对某种特定数据存储的查询处理程序(Query Processor)和游标引擎(Cursor Engine),因此OLE DB 标准实际上是规定了数据使用者和提供者之间的一种应用层的协议(Application-Level Protocol)。
OLE DB 标准中定义的新概念
OLE DB 将传统的数据库系统划分为多个逻辑组件,这些组件之间相对独立又相互通信。这种组件模型中的各个部分被冠以不同的名称:
数据提供者(Da
数据服务提供者(Da
业务组件(Business Component)。利用数据服务提供者、专门完成某种特定业务信息处理、可以重用的功能组件。分布式数据库应用系统中的中间层(Middle-Tier)就是这种组件的典型例子。
数据消费者(Da
OLE DB 与ODBC 的关系
由于OLE DB 和ODBC 标准都是为了提供统一的访问数据接口,ODBC 标准的对象是基于SQL 的数据源(SQL-Based Da
ODBC Provider 不是在ODBC 之上的新的层次(Layer),使用OLE DB 访问ODBC 数据源将不会影响性能。实际上,ODBC Provider 的作用,是替换ODBC Driver Manager,作为应用程序与ODBC 驱动程序之间的桥梁,理论上不会增加任何开销。
ADO 的概念
OLE DB 标准的API 是C++ API,只能供C++ 语言调用(这也是OLE DB 没有改名为ActiveX DB
的原因,ActiveX 是与语言无关的组件技术)。为了使得流行的各种编程语言都可以编写符合OLE DB 标准的应用程序,微软在OLE DB
API 之上,提供了一种面向对象、与语言无关的(Language-Neutral)应用编程接口,这就是ActiveX Da
与DAO、RDO 等类似,ADO 实际上是一种对象模型,不过这个对象模型相对简单,在这个对象模型中,Connection 类似于RDO 的rdoConnection 或者DAO 的Database,Command 类似于RDO 的rdoPreparedStatement 或者DAO 的QueryDef。
值得注意的是:与DAO 等模型的层次结构不同,ADO 基本上是一种平板结构:Command 和Recordset 与Connect 之间并没有上下层次关系,这种设计主要是为了适应Internet 应用开发的需要。因为在Internet 上,像在局域网内那样维护一个永久性的连接、然后在连接的基础上执行查询,基本上是不可能的。
评论