2016-11-15 10 views
2

this StackOverflowの質問状態でブック:OLE DBとADO(VS)プログラミング言語の依存関係

OLE DBはにそのデータを公開する データ・ベースのアプリケーションを開発するソフトウェアベンダーのために設計されていたことを覚えておいてくださいあなた、一貫したインターフェイスを介して、エンドユーザーの 開発者。 OLE DBは高速で、効率的で、 と強力です。デベロッパーがデータアクセス 技術で探しているものすべてがあります。これは、人に知られているデータソース(または、Windowsの場合は )にアクセスし、データソースに関係なく、これらのデータへのアクセスを一貫したインターフェイスで提供します。 OLE DBの問題点は、ODBCのように、Visualスタイルの 基本およびその他の開発者は、CスタイルのAPIに基づいているためアクセスできません。 Visual Basic開発者は特に、もっと多くのものが必要でした。

1.1.3

ADO ActiveXデータオブジェクト(ADO)を入力します。 OLE DBへのアプリケーションレベルのインターフェイスであるADOは、MicrosoftのUDA 戦略の最新の最大のものです。これは、以前のDAOとRDOの最高の機能を統合し、VBAプログラマ向けのOLE DBアクセシビリティを追加します。 ADOは、 のソース(テキストベースまたはその他のレガシーデータのリレーショナルおよび 非リレーショナルフォーマットを含む)からデータにアクセスするには、 の一貫性のある言語に依存しない手段を提供します。 (私は自分自身をADOに取得する前にアルファベットスープのいくつかの を説明するために必要な、なぜあなたが今見ることができます。)

しかしOLE DB referenceを見て、OLE DBの参照は、COMインターフェイスから構成される。

  1. OLE DBの参照はCOMインターフェースで構成されている場合

    、それはCOMを使用しての全体の目的は、物事言語は独立させることですので、OLE DBは、独立した言語であることを意味するものではありませんか?

  2. APIがCOMインターフェイスで構成されている場合、OLE DBにCスタイルのAPIが呼び出されるのはなぜですか?それらのインターフェイスにはメソッドがあり、オブジェクト指向プログラミングのオブジェクトと同じようなものです。 (大文字と小文字を区別するCスタイルAPI)

  3. OLE DBが言語に依存する場合、OLE DB APIを使用できる言語は何ですか?

  4. CoCreateInstance()関数を使用してOLE DBインターフェイスのインスタンスを作成できる場合、その同じ関数(またはVBのコンパートメント)を使用することはできませんでした。 VBでそのインターフェイスのインスタンスを作成するVisual Basic?

答えて

4

完全機能のCOMインターフェイスを「Cスタイル」と呼ぶのは一般的です(おそらく誤解を招くかもしれません)。

より正確に言えば、OLE DBインターフェイスはCOMインターフェイスです。はい、100%言語に依存しません。ただし、使用する言語がCOMを完全にサポートしている限りです。ただし、オートメーション互換のインターフェイスではありません。

Visual Basicでは、COMがサポートするすべてのサブセットのみがサポートされています。 Visual BasicでサポートされていないOLE DBインターフェイスを使用するために必要なことがあります。

たとえば、IRowset::GetDataを考えてください。 void*は、レコードを保持するのに適切なサイズの事前に割り当てられたメモリバッファにかかります。これをVisual Basicで簡単に提供する方法はありません。

VBScriptはさらに悪いです.Variableを介してすべてのデータを処理する必要があるためです。 OLE DBは、VBScriptで提供できないネイティブタイプのintを使用します。

対照的に、ADOは、自動化互換のラッパーレイヤーで、VB6、VBScript、およびVBAから使用できます。

関連する問題