ODBC和OleDB有什么区别?

时间:2009-07-24 14:58:28

标签: database odbc oledb

我在这里找到了这个问题:OLEDB v/s ODBC

这给了我更多的信息,但没有真正回答我问的问题,所以我将从那里开始。

我在C#工作。我会告诉你关于我是如何解决这个难题的长篇故事,但基本上我是在尝试在ODBC和oleDB之间做出决定。

我们与许多不同的客户合作,这些客户拥有各种各样的数据库(一些SQL,一些oracle,一些我从未听说过的东西,也没有记住其名称)

现在,根据我的理解,ODBC已经过时了,而且是标准。现在OleDB已经出现......并且......是不同的?但完成同样的事情(它与数据库对话)

为什么我要使用一个而不是另一个? ODBC是(根据上面的帖子)跨平台,这很好,但他提供的信息很少,关于OleDB提供的ODBC没有。

在我的其他研究中,我发现(在MSDN论坛上)人们说“如果可以,请使用OleDB,如果必须,请求使用ODBC”当然,三个人没有给出任何理由,所以我想听一些。

3 个答案:

答案 0 :(得分:16)

ODBC是用于访问数据库的C API。它有一个标准,它得到了每个主要数据库供应商的支持,它有很好的文档记录,它是跨平台的。 OLEDB是一个类似的接口,它使用Microsoft的COM技术而不是C API。这意味着它只能在支持COM的平台上轻松使用。

在一天结束时,两个库提供大致相同的基本功能。实际上,有些OLEDB驱动程序实际上使用ODBC而不是本机数据库库。

所以,如果你是C#开发人员,在Windows上工作,OLEDB是两者之间的明显选择。如果你使用C(或C ++不使用COM),或者需要跨平台支持,那么ODBC是更好的选择。

答案 1 :(得分:2)

作为C#开发人员,因为您要访问许多不同的数据源,所以应该使用OLEDB。我从这个white paper复制了以下内容,因为它提供了一些提示:

  

OLE DB不是ODBC的替代

     

ODBC技术和第三方市场已经成熟到ODBC是访问SQL数据库的理想技术。因此,OLE DB的一个组成部分是新的OLE DB驱动程序管理器,它使OLE DB使用者能够与ODBC提供程序进行通信。以下信息可指导您选择使用哪种技术:

     
      
  • 如果从非OLE环境访问标准关系数据库,ODBC是最佳选择。
  •   
  • 如果要将数据接口公开给非SQL数据,OLE DB是最佳选择。
  •   
  • 如果您在OLE环境中编程,OLE DB是最佳选择。
  •   
  • 如果想构建可互操作的数据库组件,OLE DB是唯一的选择。
  •   

答案 2 :(得分:0)

如果您使用C#编程,则不会直接使用其中任何一个。您将以某种形式使用ADO.NET。

是的,您在连接字符串中指定的提供程序可能会变成ODBC提供程序或OleDB提供程序,但这对您的代码无关紧要。 ADO.NET将从您的视图中获取API。