ATL OLE DB コンシューマー ウィザード
このウィザードでは、指定した OLEDB プロバイダーを通して指定したデータ ソースにアクセスするために必要なデータ連結が設定された OLEDB コンシューマー クラスを作成します。
注意
このウィザードでは、[データ ソース] をクリックしてデータ ソースを選択してから、[クラス] フィールドと [.h ファイル] フィールドに名前を入力する必要があります。
[データ ソース]
[データ ソース] オプションでは、OLE DB プロバイダーを指定して、選択したデータ ソースを設定できます。 このボタンをクリックすると、[データ リンク プロパティ] ダイアログ ボックスが表示されます。 接続文字列の作成と [データ リンク プロパティ] ダイアログ ボックスの詳細については、Windows SDK ドキュメントの「Data Link API Overview」を参照してください。注意
以前のリリースでは、Shift キーを押しながら [データ ソース] ボタンをクリックすると [ファイルを開く] ダイアログが表示され、データ リンク (.udl) ファイルを選択できました。 現在のリリースでは、この機能はサポートされていません。
このダイアログ ボックスには以下の 4 つのタブがあります。
[プロバイダー] タブ
[接続] タブ
[詳細設定] タブ
[すべて] タブ
[データ リンク プロパティ] ダイアログ ボックスのタブの詳細については、以下のトピックを参照してください。
[OK] をクリックして終了します。 [データベース オブジェクトの選択] ダイアログ ボックスが表示されます。 このダイアログ ボックスでは、コンシューマーが使用するテーブル、ビュー、またはストアド プロシージャを選択します。
プロバイダー
データ ソースへの接続を管理する適切なプロバイダーを選択します。 プロバイダーの種類は、通常は接続するデータベースの種類によって決定します。 Next ボタンをクリックするか、[接続] タブをクリックします。[接続]
このタブの内容は、選択したプロバイダーによって異なります。 プロバイダーの種類は多数ですが、このセクションでは、2 つの一般的な接続である SQL と ODBC データについて説明します。 それ以外は、ここで説明するフィールドに似た変化形です。SQL データの場合:
[サーバー名の選択または入力] ドロップダウン リスト メニューをクリックすると、ネットワークに登録されたすべてのデータ サーバーが表示されるので、その 1 つを選択します。
[サーバーにログオンするための情報の入力] データ サーバーにログオンするためのユーザー名およびパスワードを入力します。
[サーバー上のデータベースを選択する] ドロップダウン リスト メニューをクリックすると、データ サーバーに登録されたすべてのデータベースが表示されるので、その 1 つを選択します。
または
[データベース ファイルをデータベース名として添付する] データベースとして使用できるファイルを指定して、明示的なパス名を入力します。
注意
[データ リンク プロパティ] ダイアログ ボックスの [パスワードを保存する] の機能には、セキュリティ上の問題があります。 [サーバーにログオンするための情報の入力] には、次の 2 つのオプション ボタンがあります。
[Windows NT の統合セキュリティを使用する]
[特定のユーザー名とパスワードを使用する]
[特定のユーザー名とパスワードを使用する] をクリックすると、パスワード保存用のオプション ([パスワードを保存する] nのチェック ボックス) を使用できますが、このオプションにはセキュリティ上の問題があります。 [Windows NT の統合セキュリティを使用する] を選択することをお勧めします。このオプションではパスワードが暗号化されるため、安全です。
[パスワードを保存する] を選択する場合も考えられます。 たとえば、プライベート データベース ソリューションによってライブラリをリリースしている場合、データベースには直接アクセスしないで、代わりに中間層アプリケーションを使用して (選択した認証スキームによって) ユーザーを確認し、そのユーザーが利用できるデータの種類を制限します。
ODBC データの場合:
1. [データ ソースを指定します] データ ソース名、または接続文字列を使用できます。
[データ ソース名を使用する] このドロップダウン リストには、コンピューターに登録されているデータ ソースが表示されます。 ODBC Data Source Administratorを使用すると、事前にデータ ソースをセットアップできます。または [接続文字列を使用する] 既に取得した接続文字列を入力するか、[ビルド] ボタンをクリックします。[データ ソースの選択] ダイアログ ボックスが表示されます。 ファイルまたはコンピューターのデータ ソースを選択して、[OK] をクリックします。
注意
サーバー エクスプローラーで既存の接続のプロパティを表示すると、接続文字列を取得できます。また、サーバー エクスプローラーで [接続の追加] をダブルクリックすると、接続を作成できます。
2. [サーバーにログオンするための情報の入力] データ サーバーにログオンするためのユーザー名およびパスワードを入力します。
3. 使用する初期カタログを入力します。
4. [テスト接続] をクリックし、テストに合格したら、[OK] をクリックします。 合格しなかった場合はログオン情報を確認し、別のデータベース、または別のデータ サーバーで試してみます。
[詳細]
[ネットワーク設定] Impersonation level (サーバーがクライアントの権限を借用するときに使用できる権限借用レベルで、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'
詳細については、「属性の基本的なしくみ」を参照してください。
[種類]
以下のオプション ボタンのいずれかをクリックし、コンシューマー クラスが CTable と CCommand (既定) のどちらから派生するかを指定します。[テーブル]]
CTable または db_table を使用してテーブル クラスの宣言とテーブル アクセサー クラスの宣言を作成する場合は、このオプションを選択します。[コマンド]
CCommand または db_command を使用してコマンド クラスの宣言とコマンド アクセサー クラスの宣言を作成する場合は、このオプションを選択します。 これは、既定の設定です。
[サポート]
コンシューマーでサポートする更新の種類を指定するには、このチェック ボックスをオンにします。既定では、更新はサポートされません。 以下の各オプションでは、プロパティ セット マップに DBPROP_IRowsetChange と、DBPROP_UPDATABILITY の適切なエントリが設定されます。[変更]
コンシューマーが行セットでの行データの更新をサポートするように指定します。[挿入]
コンシューマーが行セットへの行の挿入をサポートするように指定します。[削除]
コンシューマーが行セットからの行の削除をサポートするように指定します。
参照
処理手順
参照
Connection Strings and Data Links (OLE DB)