使用OLE DB实现位图存储

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 [...]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值