OLE DB简介:
OLE DB是Microsot的新数据接口,他给予组件对象模型(Component Object Model, COM).这种接口是Microsoft对齐其列数据库API的最新补充之一。
OLE DB的特点在于对所有的数据库文件提供过了一个统一的调用接口,既可以访问关系数据库,也可以访问非关系数据库。OLE DB标准的核心内容就是要求各种数据存储(DataStore)都提供一种相同的访问接口,使得数据的使用者(应用程序)可以使用同样的方法访问各种数据库,而不用考虑数据的具体存储地点、格式或类型。
OLE DB的API是符合COM标准、基于对象的。因此,OLE DB标准实际上是规定了数据使用者和数据提供者之间的一种应用层协议(Application-Level Protocol)。
OLE DB编程模型
OLE DB将传统的数据库系统划分为多个逻辑组件:
1、数据提供者(Data Provider),提供数据存储的软件组件,小到普通的文本文件,大到主机上的复杂数据库,或者电子邮件存储,都是数据提供者。
2、数据服务提供商(Data Service Privider),位于数据提供者之上,从过去的数据库管理系统中分离出来,独立运行的功能组件,例如查询处理器和游标引擎 ,这些组件使得数据提供者提供的数据以表状数据的形式向外表示,而不管真实的物理数据是如何组织和存储的,并实数据的查询和修改功能。
3、业务组件(Bussiness Component)。利用数据服务提供者,专门完成某种特定信息业务处理、可以重用的功能组件。典型应用:分布式数据库应用系统中的中间层。
4、数据消费者(Data Consumer)。任何需要访问数据的系统程序或应用程序,除了典型的数据库应用程序之外,还包括需要访问各种数据源的开发工具或语言。
OLE DB对象的结构
OLE DB包括7各基本的对象:
1、枚举器(Enumerator):用于列举可用的数据源和其他可用的枚举器;
2、数据源对象(Data Source Object):数据源对象用于管理对数据源的连接,它是具体的数据源的抽象;
3、会话(Session):当创建了数据源对象后,为了处理与数据源对象有关的数据,需要使用数据源对象创建会话对象;
4、事务(Transaction),用于将多个操作合并为一个单一事务处理。事务对象缓存了对数据源的变化,是以用程序有机会选择提交还是退出以往的操作。事务能够提高系统访问数据源时的性能。
5、命令(Command):命令对象用于给数据源发送文本命令,主要用于执行SQL命令;
6、行集(Rowset):用表格的形式显示数据,如索引。行集可以从会话或者命令对象产生。
7、错误(Error):可以被任何OLE DB对象的任何接口产生,错误对象中封装了当访问数据提供程序时发生的错误。错误对象也能够获得扩展的返回码和状态信息。
OLE DB客户模板
直接使用OLE DB的对象和接口设计数据库应用程序需要书写大量的代码。为了简化程序设计,Vsual C++提供了ATL模板用于设计OLE DB数据库用用程序和
数据提供程序。VC中提供了用于OLE DB的ATL模板可分为数据提供程序的模板和数据使用程序的模板(客户模板)。下面将对OLE DB客户模板做一些介绍。
1、会话类
(1)CDataSource
CDataSource类对应于OLE DB数据资源对象,代表一个通过服务器到数据资源的连接。
(2)CEnumerator
CEnumerator相当于OLE DB规范中的枚举器对象,用来查询在系统中可用的数据提供程序的信息。其定义如下:
class CEnumerator : public CAccessorRowset >
(3)CSession
CSession对象代表一个单数据库访问会话。一个或多个会话可以与每一个由CDataSource对象代表的服务器连接(数据资源)相关联。CSession提供了StartTransaction方法。一旦一个事务开始了,就能够用Commit方法提交这个事务,或者用Abort方法撤销这个事务。
(4)CEnumeratorAccessor
CEnumeratorAccessor类被CEnumerator类使用,用来从枚举器中返回的行集中的数据提供程序的信息。枚举器中所返回的行集中包含了系统中可用的数据提供程序以及程序中可见的枚举器信息。
2、存储器类
(1)CAccessorBase
CAccessorBase是所有存储器类的基类。CAccessorBase允许一个行集合管理器管理多个存储器。它的参数和输出列都提供了绑定。
(2)CAccessor
CAccessor类代表了存储器类型之一,支持一个行集合上的多个存储器。当知道数据库的结构和类型时,用这个存储器类型。其定义如下:
templateclass CAccessor : public T, CAccessorBase
(3)CDynamicAccessor
CDynamicAccessor类是可以在程序运行时动态产生的访问器类。当不知道数据源的列结构信息时,可以在程序中动态地查询数据源结构,然后根据得到的信息调用此类,将变量与数据源的列绑定。
class CDynamicAccessor : public [...]
分享到:
相关推荐
- 创建Connection对象:通过`CoCreateInstance`函数创建一个`_ConnectionPtr`实例,设置连接字符串,例如:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\myDatabase.mdb",其中包含了数据库类型和路径。 - ...
如果你选择使用OLEDB,可以使用`CDataSource`和`CSession`类。设置数据源后,通过`Open`函数打开会话: ```cpp CDataSource ds; ds.OpenFromInitializationString(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=...
- 创建数据库连接字符串,包括数据库的路径和凭据,例如:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\path\to\database.mdb;User ID=admin;Password="。 4. **执行SQL语句**: - 通过连接创建一个记录集...
db.Open(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mydatabase.mdb;Jet OLEDB:Database Password=mypassword;")); CRecordset rs(&db); rs.Open(CRecordset::forwardOnly, _T("SELECT * FROM Maps"), ...
- 连接数据库:`connection.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\YourDatabase.accdb;Persist Security Info=False;")` - 创建记录集:`recordset.Open("SELECT * FROM YourTable", ...
2.3 C++对象使用抽象基类——例程DB_vtbl 2.3.1 问题:私有数据成员被暴露 2.3.2 解决方案:抽象基类 2.3.2.1 什么是抽象基类(Abstract Base Class) 2.3.2.2 实现秘诀:虚函数(Virtual Functions) 2.3.3 使用...
db.Open(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=your_database.mdb")); CRecordset rs(&db); rs.Open(CString("SELECT * FROM YourTable"), CRecordset::forwardOnly); ``` 在这个例子中,"your_...
Oledb操作辅助类 OleDbHelper.cs 使用OleDb数据源执行SQL语句 ?Common Class Name File Function 执行命令类 CmdUtil.cs 执行各类命令;如:cmd.exe 公历/农历类 CNDate.cs 公历、农历、星座、气节等相关转换 日期格式...
- **优势**:相较于传统的ODBC接口,直接使用OLEDB可以提高应用程序性能。 - **实现**:通过ADO.NET等现代数据访问技术直接连接数据库。 ##### 2. 连接池使用 - **原理**:连接池是一种预分配多个数据库连接的技术...
第33章 OLE DB模板 第34章 TCP/IP,winsook和winInet 第六部分 Interact编程 第35章 Microsoft Intornet信息服务器(iis) 第36章 ActiveX文档服务器及Internet 第37章 动态HTML介绍 第38章 Windows CE...
- **COleDBRecordView**:OLE DB记录视图类。 - **CRecordView**:记录视图类。 - **CAnimateCtrl**:动画控件类。 - **CButton**:按钮控件类。 - **CBitmapButton**:位图按钮控件类。 - **CComboBox**:...
Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\myDatabase.mdb;" Dim sql As String = "SELECT ImageField FROM MyTable WHERE ID = 1" Using conn As New OleDbConnection...
4. **数据连接**:Access可以连接到其他数据库(如Oracle),通过ODBC或OLEDB接口实现数据交互。在这种情况下,Access可以作为前端界面,Oracle作为后端存储,实现数据的高效处理。 结合以上两方面,我们可以将...
4. 分布式查询:通过OLE DB和开放数据库连接(ODBC),SQL Server 7.0能够执行跨多个数据源的复杂查询,实现数据集成。 三、新特性与改进 1. 索引管理:引入了簇索引和非簇索引,以及位图索引,优化查询性能。同时,...
首先,ADO是Microsoft的数据库访问技术,它基于OLE DB接口,允许开发者以统一的方式访问多种数据源,包括关系型数据库和XML文件。在Delphi中,通过TADOConnection、TADOCommand、TADODataSet等组件,我们可以方便地...
开发者可以使用ODBC或OLE DB接口与多种类型的数据库进行连接和交互。 8. **异常处理**:MFC提供了CException类来处理运行时错误,通过try、catch语句实现异常捕获和处理。 9. **国际化和本地化**:MFC支持多语言...
conn->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Test.mdb;Persist Security Info=False"; conn->Open(); // 打开连接 ADODB::RecordsetPtr rs; // 创建Recordset指针 rs.CreateInstance...
在核心组件方面,Greenplum包括几个关键部分:客户端访问和工具(ODBC, JDBC, OLEDB等)、管理工具(如GPCommandCenter)、工作负载管理器(GPWorkloadManager)等。这些组件共同支撑了数据库的日常运行和管理。 ...