ATL OLE DB コンシューマー ウィザード
このウィザードは、Visual Studio 2019 以降では利用できません。
このウィザードでは、指定したデータ ソースに、指定した OLE DB プロバイダーを通してアクセスするために必要な OLE DB コンシューマー クラスとデータ バインディングを設定します。
Note
このウィザードでは、Class
フィールドと .h ファイル フィールドに名前を入力する前に、[データ ソース] ボタンをクリックしてデータ ソースを選択する必要があります。
UIElement の一覧
データ ソース
[データ ソース] ボタンによって、指定した OLE DB プロバイダーを使用するデータ ソースを設定できます。 このボタンをクリックすると、[データ リンク プロパティ] ダイアログ ボックスが表示されます。 接続文字列の作成と [データ リンク プロパティ] ダイアログ ボックスの詳細については、Windows SDK ドキュメントの「Data Link API の概要」を参照してください。
以下の追加情報では、[データ リンク プロパティ] ダイアログ ボックスのタブについて説明します。
[プロバイダー] タブ
データ ソースへの接続を管理するための適切なプロバイダーを選択します。 プロバイダーの種類は、通常、接続先データベースの種類によって決まります。 [次へ] ボタンをクリックするか、[接続] タブをクリックします。
[接続] タブ
このタブの内容は、選択したプロバイダーによって異なります。 さまざまな種類のプロバイダーがありますが、このセクションでは、特に一般的な 2 つの接続 (SQL と ODBC データ) について説明します。 その他は、ここで説明するフィールドに類似するバリエーションです。
SQL データの場合:
サーバー名を選択または入力する: ドロップダウン リスト メニューをクリックして、ネットワーク上の登録済みのすべてのデータ サーバーを表示し、いずれかを選択します。
サーバーにログオンするための情報を入力する: データ サーバーにログオンするためのユーザー名とパスワードを入力します。
Note
[データ リンク プロパティ] ダイアログ ボックスの [パスワードを保存する] 機能には、セキュリティ上の問題があります。 [サーバーにログオンするための情報の入力] には、次の 2 つのラジオ ボタンがあります。
- Windows NT の統合セキュリティを使用する
- [特定のユーザー名とパスワードを使用する]
[特定のユーザー名とパスワードを使用する] を選択した場合、パスワードを保存するオプション ([パスワードを保存する] チェック ボックスを使用) がありますが、このオプションは安全ではありません。 [Windows NT の統合セキュリティを使用する] を選択することをお勧めします。パスワードが暗号化されるため、このオプションは安全です。 "パスワードを保存する" の選択が必要な場合があります。たとえば、プライベート データベース ソリューションを使用してライブラリをリリースする場合は、データベースに直接アクセスするのではなく、中間層アプリケーションで (選択した任意の認証スキームを使用して) ユーザーを確認した後、ユーザーが利用できるデータの種類を制限する必要があります。
サーバー上のデータベースを選択する: ドロップダウン リスト メニューをクリックして、データ サーバー上の登録済みのすべてのデータベースを表示し、いずれかを選択します。
または
データベース ファイルをデータベース名としてアタッチする: データベースとして使用するファイルを指定します。明示的なパス名を入力します。
ODBC データの場合:
データのソースを指定する: データ ソース名または接続文字列を使用できます。
データ ソース名を使用する: このドロップダウン リストには、コンピューターに登録されているデータ ソースが表示されます。 事前に、ODBC データ ソース アドミニストレーターを使用してデータ ソースを設定できます。
または
接続文字列を使用する: 取得済みの接続文字列を入力するか、[ビルド] ボタンをクリックします。[データ ソースの選択] ダイアログ ボックスが表示されます。 ファイルまたはコンピューターのデータ ソースを選択し、[OK] をクリックします。
Note
サーバー エクスプローラーで既存の接続のプロパティを表示することで、接続文字列を取得できます。または、サーバー エクスプローラーで [接続の追加] をダブルクリックすることで、接続を作成できます。
サーバーにログオンするための情報を入力する: データ サーバーにログオンするためのユーザー名とパスワードを入力します。
使用する初期カタログを入力します。
[テスト接続] をクリックしてテストが成功することを確認し、[OK] をクリックします。 そうでない場合は、ログオン情報をチェックするか、別のデータベースで試すか、別のデータ サーバーを試します。
詳細タブ
ネットワーク設定: [偽装レベル] (クライアントを偽装するときにサーバーが使用できる偽装レベル。RPC 偽装レベルに直接対応します) と [保護レベル] (クライアントとサーバー間で送信されるデータの保護レベル。RPC 保護レベルに直接対応します) を指定します。
その他: [接続タイムアウト] に、タイムアウトが発生する前に許容されるアイドル時間を秒数で指定します。 [アクセス許可] に、データ接続のアクセス許可を指定します。
高度な初期化プロパティの詳細については、各 OLE DB プロバイダーで提供されるドキュメントを参照してください。
[すべて] タブ
このタブには、指定したデータ ソースと接続の初期化プロパティの概要が表示されます。 これらの値を編集できます。
[OK] をクリックして完了します。 [データベース オブジェクトの選択] ダイアログ ボックスが表示されます。 このダイアログ ボックスから、コンシューマーが使用するテーブル、ビュー、またはストアド プロシージャを選択します。
クラス
データ ソースを選択すると、このボックスには、選択したテーブルまたはストアド プロシージャ―に基づいて既定のクラス名が入力されます (後述の「データ ソースを選択する」を参照してください)。 クラス名を編集できます。
.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'
詳細については、「属性の基本的なしくみ」を参照してください。
Type
次のボタンのいずれかを選択して、コンシューマー クラスが
CTable
から派生するかCCommand
(既定値) から派生するかを指定します。Table
CTable
またはdb_table
を使用して、テーブルとテーブル アクセサー クラスの宣言を作成するには、このオプションを選択します。コマンド
CCommand
またはdb_command
を使用して、コマンドとコマンド アクセサー クラスの宣言を作成するには、このオプションを選択します。 これは既定値です。
サポート
コンシューマーでサポートされる更新の種類を指定するチェック ボックスを選択します (既定値は none です)。 以下のそれぞれによって、DBPROP_IRowsetChange と DBPROP_UPDATABILITY の適切なエントリがプロパティ セット マップに設定されます。
変更点
コンシューマーで、行セットの行のデータの更新がサポートされることを指定します。
[挿入]
コンシューマーで、行セットへの行の挿入がサポートされることを指定します。
削除
コンシューマーで、行セットからの行の削除がサポートされることを指定します。
関連項目
ATL OLE DB コンシューマー
コード ウィザードを使用した機能の追加
接続文字列およびデータ リンク (OLE DB)