次の方法で共有


ATL OLE DB コンシューマ ウィザード

更新 : 2007 年 11 月

このウィザードでは、指定した OLEDB プロバイダを通して指定したデータ ソースにアクセスするために必要なデータ連結が設定された OLEDB コンシューマ クラスを作成します。

a4w79x4f.alert_note(ja-jp,VS.90).gifメモ :

このウィザードでは、[データ ソース] をクリックしてデータ ソースを選択してから、[Class] フィールドと [.h ファイル] フィールドに名前を入力する必要があります。

  • [データ ソース]
    [データ ソース] オプションでは、OLE DB プロバイダを指定して、選択したデータ ソースを設定できます。このボタンをクリックすると、[データ リンク プロパティ] ダイアログ ボックスが表示されます。接続文字列の作成と [データ リンク プロパティ] ダイアログ ボックスの詳細については、Windows SDK ドキュメントの「Data Link API Overview」を参照してください。

    a4w79x4f.alert_note(ja-jp,VS.90).gifメモ :

    以前のリリースでは、Shift キーを押しながら [データ ソース] ボタンをクリックすると [ファイルを開く] ダイアログが表示され、データ リンク (.udl) ファイルを選択できました。現在のリリースでは、この機能はサポートされていません。

    このダイアログ ボックスには以下の 4 つのタブがあります。

    • [プロバイダ] タブ

    • [接続] タブ

    • [詳細設定] タブ

    • [すべて] タブ

  • Class
    データ ソースを選択すると、このボックスには、選択したテーブルまたはストアド プロシージャに基づいて既定のクラス名が設定されます。下の [データ ソース] の説明を参照してください。このクラス名は編集できます。

  • [.h ファイル]
    データ ソースを選択すると、このボックスには、選択したテーブルまたはストアド プロシージャに基づいて既定のヘッダー クラス名が設定されます。下の [データ ソース] の説明を参照してください。ヘッダー ファイル名を編集したり、既存のヘッダー ファイルを選択することも可能です。

  • [属性付き]
    このオプションを選択するかどうかによって、ウィザードがコンシューマ クラスを作成するときに属性とテンプレート宣言のどちらを使用するかが決まります。このオプションを選択すると、ウィザードはテンプレート宣言ではなく属性を使用します。既定では、このオプションが選択されています。このオプションの選択を解除すると、ウィザードは属性ではなくテンプレート宣言を使用します。

    • コンシューマの種類として [テーブル] を選択した場合、ウィザードは db_source 属性と db_table 属性を使用して、テーブル クラスの宣言とテーブル アクセサ クラスの宣言を作成し、db_column を使用して、列マップを作成します。次に例を示します。

      // Inject table class and table accessor class declarations
      [
          db_source("<initialization_string>"),
          db_table("dbo.Orders")
      ]
      ...
      // Column map
          [ db_column(1, status=m_dwOrderIDStatus,         length=m_dwOrderIDLength) ] LONG m_OrderID;
          [ db_column(2, status=m_dwCustomerIDStatus,         length=m_dwCustomerIDLength) ] TCHAR m_CustomerID[6];
          ...
      

      これは、次のように、CTable テンプレート クラスを使用して、テーブル クラスとテーブル アクセサ クラスを宣言し、BEGIN_COLUMN_MAP マクロと END_COLUMN_MAP マクロを使用して列マップを作成する場合とは異なります。

      // Table accessor class
      class COrdersAccessor;
      // Table class
      class COrders : public CTable<CAccessor<COrdersAccessor> >;
      ...
      // Column map
      BEGIN_COLUMN_MAP(COrderDetailsAccessor)
          COLUMN_ENTRY_LENGTH_STATUS(1, m_OrderID,         m_dwOrderIDLength, m_dwOrderIDStatus)
          COLUMN_ENTRY_LENGTH_STATUS(2, m_CustomerID,         m_dwCustomerIDLength, m_dwCustomerIDStatus)
          ...
      END_COLUMN_MAP()
      
    • コンシューマの種類として [コマンド] を選択した場合、ウィザードは db_source 属性と db_command 属性を使用し、db_column を使用して、列マップを作成します。次に例を示します。

      [
          db_source("<initialization_string>"),
          db_command("SQL_command")
      ]
      ...
      // Column map using db_column is the same as for consumer type of 'table'
      

      これは、次のように、コマンド クラスの .h ファイル内のコマンド クラスの宣言とコマンド アクセサ クラスの宣言を使用する場合とは異なります。

      Command accessor class:
      class CListOrdersAccessor;
      Command class:
      class CListOrders : public CCommand<CAccessor<CListOrdersAccessor> >;
      ...
      // Column map using BEGIN_COLUMN_MAP ... END_COLUMN_MAP is the same as
      // for consumer type of 'table'
      

    詳細については、「属性の基本的なしくみ」を参照してください。

  • [種類]
    以下のオプション ボタンのいずれかをクリックし、コンシューマ クラスが CTableCCommand (既定) のどちらから派生するかを指定します。

    • [テーブル]
      CTable または db_table を使用してテーブル クラスの宣言とテーブル アクセサ クラスの宣言を作成する場合は、このオプションを選択します。

    • [コマンド]
      CCommand または db_command を使用してコマンド クラスの宣言とコマンド アクセサ クラスの宣言を作成する場合は、このオプションを選択します。これは、既定の設定です。

  • [サポート]
    コンシューマでサポートする更新の種類を指定するには、このチェック ボックスをオンにします。既定では、更新はサポートされません。以下の各オプションでは、プロパティ セット マップに DBPROP_IRowsetChange と、DBPROP_UPDATABILITY の適切なエントリが設定されます。

    • [変更]
      コンシューマが行セットでの行データの更新をサポートするように指定します。

    • [挿入]
      コンシューマが行セットへの行の挿入をサポートするように指定します。

    • [削除]
      コンシューマが行セットからの行の削除をサポートするように指定します。

参照

処理手順

ATL OLEDB コンシューマの追加

概念

コード ウィザードを使用した機能の追加

参照

Connection Strings and Data Links (OLE DB)