2009-07-24 5 views
7

Ich habe diese Frage hier: OLEDB v/s ODBCWas ist der Unterschied zwischen ODBC und OleDB?

Die gab mir mehr Informationen, aber beantwortete nicht wirklich die Frage, die ich stelle, also werde ich von dort fortfahren.

Ich arbeite in C#. Ich erspare Ihnen die lange Geschichte darüber, wie ich zu diesem Rätsel gekommen bin, aber im Grunde versuche ich mich zwischen ODBC und OleDB zu entscheiden.

Wir arbeiten mit vielen verschiedenen Kunden, die in beträchtlichem Ausmaß variiert Datenbanken haben (einige SQL, einige Orakel, einige etwas anderes, das ich noch nie gehört habe und nicht die Mühe, den Namen zu merken)

Jetzt Von dem, was ich verstehe, ist ODBC alt und war/ist der Standard. Und jetzt ist OleDB gekommen und ... ist ... anders? aber erreicht die gleiche Sache (es redet mit Datenbanken)

Warum sollte ich einen über den anderen verwenden wollen? ODBC ist (gemäß dem obigen Post) plattformübergreifend, was gut ist, aber er bietet sehr wenig Informationen darüber, was OleDB bietet, was ODBC nicht tut. In meinen anderen Untersuchungen habe ich festgestellt (in den MSDN Foren) Leute sagen "benutze OleDB, wenn du kannst, wenn du musst, auf ODBC zurückgreifen" Natürlich, drei ist keine Begründung dafür gegeben, also würde ich Ich mag es, einige zu hören.

Antwort

16

ODBC ist eine C-API für den Zugriff auf Datenbanken. Es gibt einen Standard dafür, der von jedem großen Datenbankanbieter unterstützt wird, er ist sehr gut dokumentiert, er ist plattformübergreifend. OLEDB ist eine ähnliche Schnittstelle, die die COM-Technologie von Microsoft statt der C-API verwendet. Dies bedeutet, dass es nur auf Plattformen, die COM unterstützen, einfach zu verwenden ist.

Am Ende des Tages bieten beide Bibliotheken in etwa gleichwertige Grundfunktionalität. Tatsächlich verwenden einige OLEDB-Treiber tatsächlich ODBC anstelle von systemeigenen Datenbankbibliotheken.

Also, wenn Sie C# -Entwickler sind, arbeiten unter Windows, ist OLEDB die offensichtliche Wahl zwischen den beiden. Wenn Sie C (oder C++ ohne COM) verwenden oder plattformübergreifende Unterstützung benötigen, ist ODBC die bessere Wahl.

0

Wenn Sie in C# programmieren, verwenden Sie keines direkt. Sie werden ADO.NET in irgendeiner Form verwenden.

Richtig, der Provider, den Sie in Ihrer Verbindungszeichenfolge angeben, kann sich als ODBC-Provider oder als OleDB-Provider herausstellen. Dies ist jedoch für Ihren Code nicht relevant. ADO.NET wird beide APIs aus Ihrer Sicht.

+0

Wäre es einem Downvoter wichtig, den Grund für den Downvote zu erklären? –

+1

Ich habe nicht runtergestimmt, aber ich glaube nicht, dass du die Frage angesprochen hast. Es gibt viele Idioten da draußen - ich habe es am besten gefunden, sie einfach zu ignorieren. –

+0

Dann verstehe ich die Frage nicht. Er versucht nicht zu entscheiden, welche API er verwenden soll, oder? Ich dachte, er versuchte zu entscheiden, welche Treiber für die größtmögliche Flexibilität verwendet werden sollten. Ich habe nichts von der Frage bekommen, die andeutet, dass das OP gerade damit beginnt, die OLEDB COM API aufzurufen. –

2

Als C# Entwickler und weil Sie auf viele verschiedene Datenquellen zugreifen, sollten Sie mit OLEDB gehen. Ich kopierte die folgenden von diesem white paper, weil es einige Hinweise gibt, was zu verwenden, wenn:

OLE DB kein Ersatz für ODBC ist

Die ODBC-Technologie und Drittmarkt haben zu einem Punkt gereift bei denen ODBC eine ideale Technologie für den Zugriff auf SQL-Datenbanken ist. Daher ist ein integraler Bestandteil von OLE DB ein neuer OLE DB-Treibermanager, mit dem OLE DB-Benutzer mit ODBC-Providern kommunizieren können. Die folgenden Informationen können bei der Auswahl der zu verwendenden Technologie hilfreich sein:

  • Wenn Sie auf relationale Standarddatenbanken aus einer Nicht-OLE-Umgebung zugreifen, ist ODBC die beste Wahl.
  • Wenn Sie eine Datenschnittstelle für Nicht-SQL-Daten verfügbar machen möchten, ist OLE DB die beste Wahl.
  • Wenn Sie in einer OLE-Umgebung programmieren, ist OLE DB die beste Wahl.
  • Wenn interoperable Datenbankkomponenten erstellt werden sollen, ist OLE DB die einzige Wahl.
  • +0

    Ich denke, es ist wichtig darauf hinzuweisen, dass die zweite Aufzählung nur für Lieferanten eines OLEDB-Treibers (oder für einige sehr spezialisierte Kunden) gilt - die Mehrheit der Client-Software stellt niemals eine solche Schnittstelle zur Verfügung. Und die vierte Kugel ist einfach Marketing-sprechen. –

    +0

    @McSim: Keiner dieser Aufzählungspunkte trifft auf die Frage zu. Die Frage war, diese Datenbanken aus C# zu verwenden. Das OP wird eine ODBC C-Basierte API oder eine COM-Basierte OLE DB-API nicht aufrufen. Sie sagen, Sie sind mit OLEDB gegangen. Rufen Sie die COM-API auf? –

    Verwandte Themen