185 votes

Quelle est la différence entre les sources de données OLE DB et ODBC ?

Je lisais un article d'aide de MS Excel sur le pivotcache et je me demandais ce qu'ils entendaient par Sources OLE DB et ODBC

...Vous devez utiliser la propriété CommandText au lieu de la propriété SQL, qui existe maintenant principalement pour compatibilité avec les versions antérieures de Microsoft Excel. Si vous utilisez les deux propriétés propriétés, la valeur de la propriété CommandText de la propriété CommandText a la priorité.

Para Sources OLE DB le CommandType décrit la valeur de la propriété CommandText.

Para Sources ODBC le texte de la commande fonctionne exactement comme la propriété SQL, et la définition de la propriété provoque le rafraîchissement des données...

J'apprécie vraiment vos réponses courtes.

2 votes

Juste une note en passant, selon ce livre Mise en œuvre d'un entrepôt de données avec Microsoft SQL Server 2012 : "Microsoft a annoncé qu'à un moment donné dans un avenir proche, la prise en charge des connexions OLE DB sera supprimée au profit des connexions ODBC."

2 votes

Depuis le 6 octobre 2017, il n'est plus déprécié. Voir blogs.msdn.microsoft.com/sqlnativeclient/2017/10/06/

160voto

bobobobo Points 17477

Selon ADO : Objets de données ActiveX un livre de Jason T. Roff, publié par O'Reilly Media en 2001. (excellent schéma ici), il dit précisément ce que MOZILLA a dit.

(directement de la page 7 de ce livre)

  • ODBC ne donne accès qu'aux bases de données relationnelles
  • OLE DB offre les fonctionnalités suivantes
    • Accès aux données, quel que soit leur format ou leur emplacement
    • Accès complet aux sources de données ODBC et aux pilotes ODBC

Il semblerait donc qu'OLE DB interagisse avec les sources de données basées sur SQL PAR L'INTERMÉDIAIRE de la couche du pilote ODBC.

alt text

Je ne suis pas sûr à 100% que cette image soit correcte. Les deux connexions dont je ne suis pas certain sont ADO.NET via ADO C-api et OLE DB via ODBC vers une source de données basée sur SQL (parce que dans ce schéma l'auteur ne met pas l'accès à OLE DB via ODBC, ce qui est une erreur à mon avis).

7 votes

Si OLE DB utilise ODBC pour se connecter aux sources de données SQL, alors toute source de données SQL prise en charge par OLE DB devrait être prise en charge par ODBC, or ce n'est pas le cas - le diagramme original devait être correct (et non celui-ci).

8 votes

En fait, parfois OLE DB englobe le pilote ODBC, parfois non. Voir ici

3 votes

Cette entrée jamesmccaffrey.wordpress.com/2006/05/02/odbc-vs-ole-db dit que pour SQL DS, OLEDB passe par ODBC.

58voto

MOZILLA Points 1983

ODBC : - Uniquement pour les bases de données relationnelles (Sql Server, Oracle etc.)

OLE DB:- Pour les bases de données relationnelles et non relationnelles. (Oracle, Sql-Server, Excel, fichiers bruts, etc.)

4 votes

Faux, les deux peuvent parler à des magasins non relationnels selon les pilotes.

1 votes

Non, avec ODBC, vous pouvez interroger même des fichiers CSV plats, et pas seulement des bases de données relationnelles.

0 votes

Faux ! Il existe également un pilote ODBC pour les fichiers texte et XML.

44voto

zvolkov Points 9673

Voici ce que je comprends (sans faire autorité) :

ODBC est une norme ouverte, agnostique sur le plan technologique, prise en charge par la plupart des fournisseurs de logiciels. OLEDB est un spécifique à la technologie L'API de Microsoft de l'ère COM (COM était une technologie de composants et d'interopérabilité avant .NET).

À un moment donné, divers fournisseurs de données (par exemple Oracle, etc.), désireux d'être compatibles avec les consommateurs de données de Microsoft, ont développé des fournisseurs OLEDB pour leurs produits, mais pour la plupart, OLEDB reste une norme réservée à Microsoft. Aujourd'hui, la plupart des Microsoft Les sources de données permettent un accès ODBC et OLEDB, principalement pour des raisons de compatibilité avec les consommateurs de données ODBC existants. Il existe également un fournisseur OLEDB (wrapper) pour ODBC qui permet d'utiliser OLEDB pour accéder aux sources de données ODBC si on le souhaite.

En termes de fonctionnalités, OLEDB est nettement plus riche qu'ODBC mais souffre du syndrome de l'anneau unique (trop générique, trop compliqué, sans opinion).

Dans le monde non-Microsoft, les fournisseurs de données et les clients basés sur ODBC sont largement utilisés et ne vont pas disparaître.

Dans la bulle Microsoft, OLEDB est progressivement éliminé au profit d'API .NET natives construites au-dessus de la couche de transport native de cette source de données (par exemple, TDS pour MS SQL Server).

6voto

Ilya Kochetov Points 11641

À un niveau très élémentaire, il s'agit simplement d'API différentes pour les différentes sources de données (c'est-à-dire les bases de données). OLE DB est plus récent et sans doute meilleur.

Vous pouvez en savoir plus sur les deux dans Wikipedia :

  1. OLE DB
  2. ODBC

En d'autres termes, vous pouvez vous connecter à la même base de données à l'aide d'un pilote ODBC ou d'un pilote OLE DB. La différence de comportement de la base de données dans ces cas est ce à quoi votre livre fait référence.

5 votes

Comme pour de nombreux sujets liés à l'informatique, la boucle est presque bouclée. SQL 2012 a été la dernière version à prendre en charge le fournisseur OLE DB Native et les applications devraient maintenant passer à ODBC. Comme au " bon vieux temps " de SQL Server technet.microsoft.com/fr/us/library/hh967418.aspx

5 votes

"OLE DB est plus récent et sans doute meilleur", c'était peut-être vrai en 2008 mais pas en 2014.

0 votes

@MichaelDavidWatson Alors que diriez-vous. Mieux vaut utiliser ODBC ou OLEDB ? J'ai besoin de prendre en charge autant de bases de données SQL différentes que possible. Et comme il est indiqué, OLE DB peut également accéder à une source de données ODBC. Alors pourquoi dites-vous que "OLE DB est plus récent et sans doute meilleur" est toujours incorrect en 2015 ? :)

3voto

user10340 Points 116

Je ne suis pas sûr de tous les détails, mais je crois savoir qu'OLE DB et ODBC sont deux API qui permettent de se connecter à différents types de bases de données sans avoir à s'occuper de tous les détails spécifiques à la mise en œuvre de chacune. D'après l'article de Wikipedia sur OLE DB OLE DB est le successeur d'ODBC chez Microsoft. Il offre certaines fonctions que vous ne pouvez pas forcément utiliser avec ODBC, comme l'accès aux feuilles de calcul en tant que sources de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X