OLE DB
OLE DB(Object Linking and Embedding, Database,对象链接嵌入数据库,有时亦写作OLEDB或OLE-DB)是微软为以统一方式访问不同类型的数据存储设计的一种应用程序接口,是一组用组件对象模型(COM)实现的接口,而与对象连接与嵌入(OLE)无关。它被设计成为ODBC的一种高级替代者和继承者,把它的功能扩展到支持更多种类的非关系型数据库,例如可能不支持SQL的对象数据库和电子表格(如Excel)。
OLE DB用一组抽象概念(包括数据源、会话、命令和行集)将数据的存储从需要访问数据的应用中分离出来。这是因为不同的应用需要访问不同数据类型和数据源,但是并不需要了解具体如何使用特定技术的方法访问这些数据。OLE DB在概念上分为了消费者和提供者。消费者是那些需要访问数据的应用程序,提供者是实现了那些接口并将数据提供给消费者的软件组件。OLE DB是微软数据访问组件(MDAC)的一部分。MDAC是一组微软技术,以框架的方式相互作用,为程序员开发访问几乎任何数据存储提供了一个统一并全面的方法。OLE DB的提供者可以用于提供像文本文件和电子表格一样简单的数据存储的访问,也可以提供像Oracle、SQL Server和Sybase ASE一样复杂的数据库的访问。OLE DB同样可以提供对层次类型的数据存储(如电子邮件系统)的访问。
另一方面,由于不同的数据存储技术可能具有不同的能力,OLE DB提供者不需要实现OLE DB中每一个接口。通过使用COM对象实现可用的能力 - OLE DB提供者将把数据存储技术的功能映射到特定的COM接口上。当某种接口提供的能力在所使用的数据库技术中不适用时,微软称该接口的可用性为"provider-specific"。同时,提供者也可以扩大数据存储的能力 - 这些能力在微软的用语中被称为services。
常見的OLE DB Provider
- SQL Server OLE DB Provider,以SQL Server為主的OLE DB資料提供者。
- Microsoft Jet OLE DB Provider,以Access, Excel, dBase等檔案型資料庫為主的OLE DB資料提供者。
- OLE DB Provider for Internet Publishing,支援WebDAV(Web Distributed Authoring and Versioning)發布的OLE DB資料提供者。
- OLE DB Provider for ODBC,呼叫ODBC的OLE DB資料提供者。
- OLE DB Provider for Oracle Client,呼叫Oracle資料庫的OLE DB資料提供者,通常由Oracle原廠提供。
- OLE DB Provider for Indexing Services,支援Microsoft Indexing Service索引庫的OLE DB資料提供者。
- OLE DB Provider for Active Directory Services,支援Active Directory目錄資料存取的OLE DB資料提供者。
- Microsoft OLE DB Persistence Provider,將資料集(Recordset)寫入檔案或由檔案讀取的OLE DB資料提供者。
OLE DB Provider工具提供者
- Microsoft Data Shaping Service for OLE DB,由指定的OLE DB資料來源組成階層化資料集的工具。
- Microsoft OLE DB Remoting Provider:可呼叫在遠端電腦中的OLE DB資料來源的工具。
- Microsoft Cursor Service for OLE DB:在OLE DB來源中提供游標巡覽服務的工具。
OLE DB产品提供者
- Microsoft(页面存档备份,存于互联网档案馆)随MDAC和JET工具包推出了一些OLE DB提供者
- Simba技术公司(页面存档备份,存于互联网档案馆)推出了SimbaProvider,一个软件开发套件(SDK),用于建造自定义OLE提供者,通过OLAP访问多维数据库和星形数据库。
- OpenLink Software为许多SQL数据库管理系统推出OLE DB提供者,也提供了OLE DB到ODBC和JDBC的桥接。
- SQLSummit.com: OLE DB提供者目录(页面存档备份,存于互联网档案馆)
- 支持Interbase和Firebird的OLE DB提供者(支持14种数据库类型,有免费和高级两种版本)(页面存档备份,存于互联网档案馆)
OLE DB的连接串的示例
connstr="PROVIDER=SQLOLEDB;DATA SOURCE=servername;UID=xyz;PWD=xxx;DATABASE=dbname"
connstr="PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=d:\abc\defg.mdb"