187

ピボットキャッシュに関する MS Excel のヘルプ記事を読んでいて、OLE DB および ODBC ソースが何を意味するのか疑問に思っていました。

...主に以前のバージョンの Microsoft Excel との互換性のために存在する SQL プロパティの代わりに、CommandText プロパティを使用する必要があります。両方のプロパティを使用する場合、CommandText プロパティの値が優先されます。

OLE DB ソースの場合、CommandType プロパティは CommandText プロパティの値を示します。

ODBC ソースの場合、CommandText プロパティは SQL プロパティとまったく同じように機能し、プロパティを設定するとデータが更新されます...

私はあなたの短い答えに本当に感謝しています。

4

11 に答える 11

163

2001年にO'ReillyMediaから出版されたJasonT.Roffの本であるADO :ActiveX Data Objects(ここでは優れた図)によると、彼はMOZILLAが言ったことを正確に述べています。

(その本の7ページから直接)

  • ODBCは、リレーショナルデータベースへのアクセスのみを提供します
  • OLE DBは、次の機能を提供します
    • フォーマットや場所に関係なくデータにアクセス
    • ODBCデータソースとODBCドライバーへのフルアクセス

したがって、OLEDBはODBCドライバー層を介してSQLベースのデータソースと対話しているように見えます。

代替テキスト

この画像が正しいかどうかは100%わかりません。 私が確信していない2つの接続は、ADO.NETからADOC-api、およびOLE DBからODBCからSQLベースのデータソースです(この図では、作成者はOLEDBのアクセスをODBCを介して行っていないためです。間違いです)。

于 2009-07-13T15:05:52.067 に答える
44

これが私の理解です(非公式):

ODBC は、テクノロジにとらわれないオープン スタンダードであり、ほとんどのソフトウェア ベンダーによってサポートされています。OLEDB は、 COM 時代のテクノロジ固有の Microsoft の API です (COM は .NET より前のコンポーネントおよび相互運用テクノロジでした)。

ある時点で、さまざまなデータ ソース ベンダー (たとえば、Oracle など) が、Microsoft データ コンシューマーとの互換性を望んで、自社製品用の OLEDB プロバイダーを開発しましたが、ほとんどの場合、OLEDB は Microsoft のみの標準のままです。現在、ほとんどのMicrosoftデータ ソースは、主に従来の ODBC データ コンシューマーとの互換性のために、ODBC と OLEDB の両方のアクセスを許可しています。また、必要に応じて OLEDB を使用して ODBC データ ソースにアクセスできるようにする、ODBC 用の OLEDB プロバイダー (ラッパー) も存在します。

機能の点では、OLEDB は ODBC よりも大幅に豊富ですが、1 つのリングからすべてを支配する症候群 (過度に一般的、過度に複雑、独断的) に悩まされています。

Microsoft 以外の世界では、ODBC ベースのデータ プロバイダーとクライアントが広く使用されており、どこにも行きません。

Microsoft バブルの中で OLEDB は段階的に廃止され、そのデータ ソースのネイティブ トランスポート層が何であれ (MS SQL Server の TDS など) 上に構築されるネイティブ .NET API が優先されます。

于 2009-07-13T17:37:43.977 に答える
8

• 2011 年 8 月: MicrosoftはOLE DBを非推奨にします ( Microsoft は、ネイティブ リレーショナル データ アクセスのために ODBC と連携しています) 。

• 2017 年 10 月: Microsoftは OLE DB の非推奨を撤回( OLE DB Driver for SQL Server の新しいリリースを発表)

于 2018-05-16T12:42:46.963 に答える
6

非常に基本的なレベルでは、これらはさまざまなデータソース(つまりデータベース)用のさまざまなAPIです。OLE DBはより新しく、間違いなく優れています。

あなたはウィキペディアで両方についてもっと読むことができます:

  1. OLE DB
  2. ODBC

つまり、ODBCドライバーまたはOLEDBドライバーを使用して同じデータベースに接続できます。これらの場合のデータベースの動作の違いは、あなたの本が参照しているものです。

于 2008-09-19T16:12:33.877 に答える
5

どちらもデータ プロバイダー (コードがデータ ソースと通信するために使用する API) です。1998 年に導入された Oledb は、ODBC (1992 年に導入) の代替となることが意図されていました。

于 2012-10-08T13:44:48.607 に答える
3

すべての詳細を把握しているわけではありませんが、OLE DB と ODBC は 2 つの API であり、それぞれの実装固有の詳細に対処する必要なく、さまざまな種類のデータベースに接続できるということです。OLE DB に関するウィキペディアの記事によると、OLE DB は Microsoft の ODBC の後継であり、データベース ソースとしてスプレッドシートにアクセスするなど、ODBC では実行できない可能性のあるいくつかの機能を提供します。

于 2008-09-19T16:19:54.063 に答える
-3

M$ が OLEDB を発明した理由を知るために、OLEDB と ODBC を比較することはできません。代わりに、OLEDB を DAO、RDO、または ADO と比較する必要があります。後者は主に SQL に依存しています。ただし、OLEDB は COM に依存しています。しかし、ODBC はすでに何年も前から存在しているため、これを改善するための OLEDB-ODBC ブリッジがあります。M$ が OLEDB を発明したときの全体像があると思います。

于 2016-09-07T04:21:59.170 に答える