odbc - entre - provedor de dados




qual é a diferença entre as fontes de dados OLE DB e ODBC? (8)

Eu estava lendo um artigo de ajuda do MS Excel sobre pivotcache e me pergunto o que eles significam por fontes OLE DB e ODBC

... Você deve usar a propriedade CommandText em vez da propriedade SQL, que agora existe principalmente para compatibilidade com versões anteriores do Microsoft Excel. Se você usar as duas propriedades, o valor da propriedade CommandText terá precedência.

Para fontes OLE DB , a propriedade CommandType descreve o valor da propriedade CommandText.

Para origens ODBC , a propriedade CommandText funciona exatamente como a propriedade SQL e a configuração da propriedade faz com que os dados sejam atualizados ...

Eu realmente aprecio suas respostas curtas.



Ambos são provedores de dados (API que seu código usará para conversar com uma fonte de dados). Oledb que foi introduzido em 1998 foi concebido para ser um substituto para ODBC (introduzido em 1992)


De acordo com o ADO: ActiveX Data Objects , um livro de Jason T. Roff, publicado pela O'Reilly Media em 2001 (excelente diagrama aqui), ele diz precisamente o que MOZILLA disse.

(diretamente da página 7 desse livro)

  • ODBC fornece acesso apenas a bancos de dados relacionais
  • O OLE DB fornece os seguintes recursos
    • Acesso aos dados, independentemente do seu formato ou localização
    • Acesso total a fontes de dados ODBC e drivers ODBC

Assim, parece que o OLE DB interage com as fontes de dados baseadas em SQL THRU, a camada do driver ODBC.

Não tenho 100% de certeza de que esta imagem está correta. As duas conexões que não tenho certeza são ADO.NET através de ADO C-api e OLE DB através de ODBC para fonte de dados baseada em SQL (porque neste diagrama o autor não coloca o acesso do OLE DB através do ODBC, que eu acredito É um erro).


Em um nível muito básico, essas são apenas APIs diferentes para as diferentes fontes de dados (ou seja, bancos de dados). O OLE DB é mais novo e possivelmente melhor.

Você pode ler mais sobre ambos na Wikipédia:

  1. OLE DB
  2. ODBC

Ou seja, você pode se conectar ao mesmo banco de dados usando um driver ODBC ou driver OLE DB. A diferença no comportamento do banco de dados nesses casos é o que seu livro se refere.


No site da Microsoft, ele mostra que o provedor OLEDB nativo é aplicado ao SQL Server diretamente e outro provedor OLEDB chamado OLEDB Provider para ODBC para acessar outro banco de dados, como Sysbase, DB2 etc. Existem diferentes tipos de componentes no provedor OLEDB. Veja Consultas Distribuídas no MSDN para mais.


O ODBC funciona apenas para bancos de dados relacionais, ele não pode funcionar com bancos de dados não relacionais, como arquivos do MS Excel. Onde Olebd pode fazer tudo.


ODBC: - Apenas para bancos de dados relacionais (Sql Server, Oracle etc)

OLE DB: - Para bancos de dados relacionais e não relacionais. (Oracle, Sql-Server, Excel, arquivos brutos, etc)


Para saber por que M $ inventa OLEDB, você não pode comparar OLEDB com ODBC. Em vez disso, você deve comparar OLEDB com DAO, RDO ou ADO. Este último depende em grande parte do SQL. No entanto, o OLEDB depende do COM. Mas o ODBC já está lá há muitos anos, então há uma ponte OLEDB-ODBC para remediar isso. Eu acho que há uma grande figura quando M $ inventa o OLEDB.