8
votes

Quelle est la différence entre ODBC et OLEDB?

J'ai trouvé cette question ici: OLEDB V / S ODBC

Ce qui m'a donné plus d'informations, mais n'a pas vraiment répondu à la question que je demande, je vais donc passer de là.

Je travaille dans C #. Je vous éparpillerai la longue histoire sur la façon dont je suis arrivé à cet énigme, mais j'essaie essentiellement de décider entre ODBC et OLEDB.

Nous travaillons avec beaucoup de clients différents qui ont des bases de données très varies (certaines SQL, certains Oracle, quelque chose d'autre que je n'ai jamais entendu parler et que je n'avais pas la peine de se souvenir du nom de)

Maintenant, à partir de ce que je comprends, ODBC est vieux et était / est la norme. Et maintenant Oledb est venu et ... est ... différent? mais accomplit la même chose (il parle aux bases de données)

Pourquoi voudrais-je utiliser un sur l'autre? ODBC est (selon la post-post ci-dessus), qui est bon, mais il offre très peu d'informations sur ce que OLEDB offre que ODBC ne le fait pas.

Dans mes autres recherches, j'ai trouvé (sur les forums MSDN) Les gens qui disent "utilisent OLEDB si vous le pouvez, si vous devez, de recourir à ODBC" Naturellement, il n'y a donc aucun raisonnement donné pour cela, alors je voudrais donc entendre certains.


0 commentaires

3 Réponses :


16
votes

ODBC est une API C pour accéder à des bases de données. Il y a une norme pour cela, il est pris en charge par chaque fournisseur de base de données majeur, il est très bien documenté, il est multiplate-forme. OLEDB est une interface similaire qui utilise la technologie COM Microsoft au lieu de l'API C. Cela signifie qu'il est seulement facilement utilisable sur les plates-formes qui supportent COM.

En fin de journée, les deux bibliothèques fournissent une fonctionnalité de base approximativement équivalente. En effet, certains pilotes OLEDB utilisent réellement ODBC plutôt que des bibliothèques de base de données indigènes.

Donc, si vous êtes développeur C #, travaillez sur Windows, OLEDB est le choix évident entre les deux. Si vous utilisez C (ou C ++ n'utilise pas COM) ou si vous avez besoin d'un support croisé, ODBC est le meilleur pari.


0 commentaires

0
votes

Si vous programmez en C #, vous n'en utiliserez pas directement l'un ou l'autre. Vous utiliserez ADO.NET sous une forme.

True, le fournisseur que vous spécifiez dans votre chaîne de connexion peut s'avérer être un fournisseur ODBC ou un fournisseur OLDED, mais cela ne comportera pas pour votre code. Ado.net va les deux API de votre vue.


4 commentaires

Est-ce que des soins descendants pour expliquer la raison du bowvote?


Je n'ai pas répondu, mais je ne pense pas que vous avez répondu à la question. Il y a beaucoup d'idiots là-bas - j'ai trouvé qu'il est préférable de les ignorer.


Ensuite, je ne comprends pas la question. Il n'essaie pas de décider de l'API à utiliser, n'est-ce pas? Je pensais qu'il essayait de décider quels pilotes utiliseront pour la plus grande flexibilité. Je n'ai rien obtenu de la question qui suggère que l'OP est sur le point de commencer à appeler l'API OLEDB COM.


En outre, les idiots ne sont pas le problème. Le problème est des personnes intelligentes qui descendent pour de bonnes raisons - et ne me diront ensuite pas quelle est la raison!



2
votes

comme un développeur C # et parce que vous accédez à de nombreuses données de données, vous devriez aller avec OLEDB. J'ai copié les éléments suivants de ce papier blanc car il donne quelques conseils à utiliser lorsque:

OLE DB n'est pas un remplaçant pour ODBC

La technologie ODBC et le marché tiers ont mûri à un point auquel ODBC est une technologie idéale pour accéder à des bases de données SQL. En conséquence, une partie intégrante de OLE DB est un nouveau gestionnaire de pilotes OLE DB permettant aux consommateurs OLE DB de parler aux fournisseurs ODBC. Les informations suivantes peuvent guider votre choix de la technologie à utiliser:

  • Si vous accédez à des bases de données relationnelles standard à partir d'un environnement non OLE, ODBC est le meilleur choix.
  • Si vous souhaitez exposer une interface de données sur des données non-SQL, OLE DB est le meilleur choix.
  • Si vous programmez dans un environnement OLE, OLE DB est le meilleur choix.
  • Si vous souhaitez créer des composants de base de données interopérables, OLE DB est le seul choix.

2 commentaires

Je pense qu'il est important de souligner que la deuxième balle ne s'applique qu'aux fournisseurs d'un pilote OLDED (ou à certains clients très spécialisés) - la majorité des logiciels client n'exposent jamais une telle interface. Et la quatrième balle est simplement marketing-parler.


@MCSIM: Aucun de ces points de bullet ne s'applique à la question. La question portait sur l'utilisation de ces bases de données de C #. L'OP n'appellera pas une API ODBC C-ODBC, ni une API basée sur Cométique OLE DB. Vous dites que vous êtes allé avec Oledb. Appelez-vous l'API COM?