数据访问技术之OLE DB

什么是OLE DB

OLEObject Linking and Embedding,对象连接与嵌入,简称OLE技术。DBData Base,数据库。

 OLE DB Microsoft开发的一种高性能的、基于COM的数据库技术 OLE DB和其他 Microsoft数据库技术的不同之处在于其提供通用数据访问的方式。 OLE DB一组 COM接口 用户可通过一组统一的接口访问数据。

 

什么是COM

COMComponent Object Model组件对象模型。是一种以组件为发布单元的对象模型,这种模型使各软件组件可以用一种统一的方式进行交互。

COM标准中,一个组件程序也被称为一个模块,它可以是一个动态连接库,称作进程内组件,也可以是一个可执行程序,称作进程外组件。一个组件程序可以包含一个或多个组件对象。COM对象不同于一般的面向对象语言中的对象概念,COM对象是建立在二进制可执行代码级的基础上,而 C++等语言中的对象是建立在源代码级基础上的,因此 COM对象是语言无关的。这一特性使得用不同编程语言开发的组件对象进行交互成为可能。

COM是开发软件组件的一种方法。

组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。开发自定义的COM组件就如同开发动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。Microsoft的许多技术,如ActiveX, DirectX以及OLE等都是基于COM而建立起来的。并且Microsoft的开发人员也大量使用COM组件来定制他们的应用程序及操作系统。

 

通用数据访问

通用数据访问提供一种统一的数据访问方式,不管数据是以何种形式存储。 在通常的业务中,有大量的信息存储在公司的数据库之外。 这些信息分散在各处,例如各种不同的文件系统(如 FAT NTFS)、索引顺序文件、个人数据库(如 Access)、电子表格(如 Excel)、项目规划应用程序(如 Project)以及电子邮件(如 Outlook)中。

通用数据访问意味着两项功能:其一是分布式查询或统一访问多个(分布式)数据源功能;其二是能够使非 DBMS数据源可由数据库应用程序访问

      分布式查询

统一访问多(即,分布式)数据源中的数据的能力。 数据源既可以是同一类型,例如两个单独的 Access数据库;也可以是不同的类型,例如一个 SQL Server数据库和一个 Access数据库。 “统一”表示可以有目的地对所有数据源运行相同的查询。

      DBMS访问

让非 DBMS 数据源能为数据库应用程序所访问的能力。 DBMS数据源的例子有 IMSDB2OracleSQL ServerAccess以及 Paradox 等。  DBMS数据源的示例包括文件系统、电子邮件、电子表格和项目管理工具中的信息。

 

OLE DB支持开发能访问各种数据源的应用程序,无论是 DBMS还是非 DBMS数据源。 OLE DB通过使用支持某一给定数据源相应的 DBMS功能的 COM接口,使得对数据源的通用访问成为可能。 COM不仅在数据源之间而且还在其他各种应用程序之间减少了不必要的服务重复,同时还使它们之间的交互操作达到最大限度。

OLE DB基于 COM规范,定义了一批可扩展并且可以维护的接口,这些接口代管并封装 DBMS功能中一致、可重复使用的部分。 这些接口定义了 DBMS组件的边界,例如行容器、查询处理器和事务处理协调器,使用这些组件可对各种信息源进行统一事务访问。

OLE DB应用程序通常写作 DLL,但是其 COM实现通过使用组件化代码克服了 DLL的缺陷(例如命名和版本问题)。  OLE DB中,可使用全局唯一标识符 (GUID)来调用接口或者访问其他组件。

OLE DB 最主要是由三个部分组合而成:   

Data Providers 数据提供者

凡是透过OLE DB 将数据提供出来的,就是数据提供者。例如SQL Server 数据库中的数据表,或是附文件名为mdb 的Access 数据库档案等,都是Data Provider。   

Data Consumers 数据使用者   

凡是使用OLE DB 提供数据的程序或组件,都是OLE DB 的数据使用者。换句话说,凡是使用ADO 的应用程序或网页都是OLE DB 的数据使用者。   

Service Components 服务组件   

数据服务组件可以执行数据提供者以及数据使用者之间数据传递的工作,数据使用者要向数据提供者要求数据时,是透过OLE DB 服务组件的查询处理器执行查询的工作,而查询到的结果则由指针引擎来管理。数据服务组件可以执行数据提供者以及数据使用者之间数据传递的工作,数据使用者要向数据提供者要求数据时,是透过OLE DB 服务组件的查询处理器执行查询的工作,而查询到的结果则由指针引擎来管理。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当链接服务器的OLEDB访问接口返回对列无效的数据时,这意味着在查询或访问数据库时,所获得的结果列与预期的不匹配或不存在。 出现此问题的原因可能是以下几种情况之一: 1. 查询语句错误:可能是SQL查询语句中的列名拼写错误、使用了不存在的表名或列名,或者查询条件不正确。建议检查查询语句中的表名和列名是否正确,并确保查询条件的准确性。 2. 数据库结构更改:数据库的结构可能已经发生了变化,例如表结构被修改或重新命名了列名。这种情况下,原来的查询语句可能会导致对列无效的数据返回。需要对查询语句进行相应的调整,以适应新的数据库结构。 3. 数据类型转换错误:查询结果中的某些数据可能无法正确转换为所期望的数据类型。这可能是因为查询结果中的某些数据类型与预期的不匹配,例如将字符串值转换为数值类型时发生错误。在这种情况下,需要检查查询结果中列的数据类型,并确保进行正确的数据类型转换。 4. 访问权限问题:如果当前用户没有足够的权限来访问数据库中的某些表或列,那么在查询时可能会返回对列无效的数据。建议检查当前用户的权限设置,并确保具有足够的权限来访问所需的表和列。 针对以上可能的原因,您可以逐一检查,并根据具体情况进行相应的调整,以解决链接服务器的OLEDB访问接口返回对列无效的数据的问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值