第8章OLEDB客户数据库编程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图8-1 OLE DB应用程序对象流 程
图8-2 OLE DB的客户模板体系 结构
– 8.1.5 OLE DB客户模板结构
DB1.1版本的标准,它使实现一
个0级OLE DB代码质量、客 与模A用T板OLL和具EMDF有BC所集如提成供。下的功优能点。 :
[optional] interface IRowsetUpdate;
[optional] interface IRowsetView;
[optional] interface ISupportErrorInfo;
}
– 错误对象
何OLE DB对象的任何接口产生。 错误对象中含有关于错误的附加 信息,包括一个可选的定制错误 对象,通过它也能够获得扩展的 返回码和状态信息。该对象包括
– 提供了数据参数绑定和列绑定的简单模型。
– 在编程时能够使用C/C++数据类型。
OLE DB的客户模板体系结构如 图8-2所示。
– 8.1.6 OLE DB客户模板类
须熟悉OLE DB的客户模板类。 根据功能,OLE DB的客户模板 类分• 成会话7类种:会话类、存取器类、 行集类、命令类、属性类、书签
– 命令对象
集对象的查询,对于其它不支持 SQL的数据源,命令对象给数据 源发送其它类型的文本命令。但 是对于数据提供程序来说,不一 定必须支持这个命令对象。一个 单独的会话能够产生多个命令对
象。该对象包括如下接口:
CoType TCommand{
[mandatory] interface IAccessor;
类以及错误类。
会话类包括CDataSource类、 CEnmmerator类、CSession类和
CE– n1. mCDamtaSoeurrcea类torAccessor类。
源的连接。在单个连接上可以拥
有多个数据库会话,其中的每一 个会话– 2. C都Enm由meraCtor类Session对象表示。 调用CDataSource类的Open方法
[optional] interface IColumnsRowset;
[optional] interface ICommandPrepare;
[optional] interface ICommandWithParameters;
[optional] interface ISupportErrorInfo;
[optional] interface IConnectionPointContainer;
[optional] interface IDBAsynchStatus;
[optional] interface IRowsetChange;
[optional] interface IRowsetFind;
定的接口,可以很容易地进行通信, 所有组件和接口共同工作,组成一 个稳定的应用程序。OLE DB的各个 对–象高都效的提数供据了访问错误对象和错误接口, 可以由应用程序截获错误,对其进 行适当处理,从而提高了应用软件
的稳定性。
客户和服务器两个方面,提供了比 传统数据库更高的效率。由于数据 使用者通常只需要数据库管理的一 部分功能,OLE DB将这些功能分离 开来,减少了用户方面的资源开销, 同时减少了服务器方面的负担。
[optional] interface IRowsetIdentity;
[optional] interface IRowsetIndex;
[optional] interface IRowsetLocate;
[optional] interface IRowsetRefresh;
[optional] interface IRowsetScroll;
综上所述,由于提供了灵活的接口 和优越的性能,OLE DB必定成为数
据库开发的方向。
– 8.1.4 OLE DB对象
OLE DB的每一个组件都是一个 COM对象,每一个组件都输出一系 列的接口。OLE DB由下列组件组成:
– 枚举器
它的枚举器。如果客户没有指定所 使用的枚举器,则可以使用枚举器 来寻找,一般通过搜寻注册表来发 现相应的数据源。该对象包括如下
于客户程序的开发。
据并将这些数据以表的形式存放, 例如关系型DBMS、存储管理器、电 子表格和ISAM数据库等。服务器提 供程序不拥有数据,但是可以通过 利用OLE DB接口建立一些提供服务 的组件。从某种意义上来说,服务
组件既是客户又是服务器。
出指令,而是通过OLE接口与数据 源进行交互,数据服务器从数据源 取得所要查询的数据时,以表格的 形–式8.1将.3 其OL提E D供B的给优接越性口,再由客户将 数据从接口取出并使用。在这些操 作中,客户和数据服务器都不必知 道对方的具体应用,而只需要对接 口进行操作,从而简化了程序设计。
接口:
CoType TEnumerator{
[mandatory] IParseDisplayName;
[mandatory] ISourceRowset;
[mandatory] IDBInitialize;
[mandatory] IDBProperties;
[mandatory] ISupportErrorInfo;
[mandatory] interface IConvertType;
[mandatory] interface IRowset;
[mandatory] interface IRowsetInfo;
[mandatory] interface IChapteredRowset;
[optional] interface IColumnsRowset;
}
– 数据源对象
者文件系统)连接的方法,此对象 中含有环境变量、连接信息、用户 信息、用户口令等信息。使用数据 源对象可以产生会话。该对象包括
如下接口:
CoType TDataSource{
[mandatory] interface IDBCreateSession;
[mandatory] interface IDBInitialize;
[optional] interface ITransactionObject;
[optional] interface ISupportErrorInfo;
}
– 事务对象
的改变,使应用程序有机会选择 提交或者回退以往的操作。事务 能够提高应用访问数据库的性能, 但是OLE DB数据服务器并不要 求支持该对象。该对象包括如下
[optional] interface ITableDefinition;
[optional] interface ITransactionJion;
[optional] interface ITransactionLocal;
[optional] interface ITransaction;
可以建立同数据源的连接。
据源和枚举器信息。 CEnmmerator通过ISourcesRowset 接口来获得包含所有数据源和枚
举器描– 3.述CSes的sion类行集,用户可以直接 通过该类得到ISourcesRowset数
据。
立同数据源的连接,创建 CSession对象的方法也是调用 CSessi–o4.nCE对nmm象erato的rAcceOssopr类en方法。该类 还提供了事务处理函数,用户调 用StartTransaction函数开始一个 事务处理操作,调用Commit或者 Abort函数提交或者回退这个事务
数 Int据ern源eOt,连L包接E括与DE传B-M输的a等il、全等W,面o是rd支文OD档持B、C。无文法本访、问的。
– ODBC不能用于专门访问特定的数据,因此使 得ODBC不够强大,为了追求标准,效率受到 了严重影响。
– 8.1.2 OLE DB的结构
它通过OLE DB接口对数据提供者的 数据进行访问和控制。在大多数情 况下,前端的数据库应用开发都属
OLE DB是一种基于COM的全新数 据库开发技术,它具有如下优点:
– 广泛的应用领域
式的文件,其中当然包括关系型和 非关系型的数据源,以及用户自定 义的文件格式,用户只需要对所使 用–的简数洁的据开源发产过程生自己的数据提供程 序,OLE DB客户程序就可以透明地
访问到它们。
服务提供程序提供了一系列功能, 这些功能可以大大简化数据提供程 序的设计。由于数据使用程序并不 需–要可知靠的道稳当定前性 数据提供程序的细节, 因此它只需要使用OLE DB的接口即 可完成程序设计。由于接口的标准 性,数据使用程序可以被用到任何 提供了数据提供程序的数据源,使 得OLE DB程序具有良好的移植性。
[mandatory] interface ISessionProperties;
[optional] interface IDBCreateCommand;
[optional] interface IDBSchemaRowset;
[optional] interface IIndexDefinition;
接口:
CoType TTransaction{
[mandatory] interface IConnectionPointContainer;
[mandatory] interface ITransaction;
[optional] interface ISupportErrorInfo;
}
第8章 OLE DB客户数据库编程
库访问接口,成为介于数据库应用 和数据源之间的一种通用数据访问 标准;其次,OLE DB能够访问的数 • 据8.1源不OLE再D受B原到理限制,OLE DB通过 OL– 8E.1D.1B服OLE务DB器与将ODB数C 据源透明化。从 6–.0O版DB本C只开能始访问,关V系i型su数a据l C源+,+而提现供在有了许对多
[mandatory] interface IColumnsInfo;
[mandatory] interface ICommand;
[mandatory] interface ICommandProperties;
[mandatory] interface ICommandText;
[mandatory] interface IConvertType;
}
– 行集
象,则行集可以由数据提供程序 直接产生,直接产生行集是每一 个数据提供程序的基本功能。根 据数据提供程序所提供的功能, 行集对象可以完成更新、插入、 删?
涌冢?
CoType TRowset{
[mandatory] interface IAccessor;
[mandatory] interface IColumnsInfo;
境,它可以被显式或者隐式地执 行。一个数据源对象可以拥有多 个会话,而通过会话又能够生成 事务、命令和行集。该对象的接
口如下:
CoType TSession{
[mandatory] interface IGetDataSource
[mandatory] interface IOpenRowset
[mandatory] interface IDBProperties;
[mandatory] interface IPersist;
[mandatory] interface IConnectionPointContainer;
[mandatory] interface IDBAsynchStatus;
[optional] interface IDBDataSourceAdmin;
[optional] interface IDBInfo;
[optional] interface IPersistFile;
[optional] interface ISupportErrorInfo;
}
– 会话
如下接口:
CoType TError{
[mandatory] interface IErrorRecords;
}
可以先使用枚举器寻找数据源, 在找到数据源以后,就可以使用 它来生成一个会话,这个会话允 许用户对数据进行访问,或者以 行集的形式,或者以命令的形式。
图8-1展示了OLE DB应用程序的 对象流程。
相关文档
最新文档