次の方法で共有


CDynamicParameterAccessor クラス

CDynamicAccessor と類似していますが、 ICommandWithParameters インターフェイスを呼び出すことで設定されるパラメーター情報を取得します。

構文

class CDynamicParameterAccessor : public CDynamicAccessor

要件

ヘッダー: atldbcli.h

メンバー

メソッド

Name 説明
CDynamicParameterAccessor コンストラクター。
GetParam バッファーからパラメーター データを取得します。
GetParamCount アクセサー内のパラメーターの数を取得します。
GetParamIO 指定されたパラメーターが入力または出力パラメーターであるかどうかを判断します。
GetParamLength バッファーに格納され、指定されたパラメーターの長さを取得します。
GetParamName 指定されたパラメーターの名前を取得します。
GetParamStatus バッファーに格納され、指定されたパラメーターのステータスを取得します。
GetParamString バッファーに格納され、指定されたパラメーターの文字列データを取得します。
GetParamType 指定されたパラメーターのデータ型を取得します。
SetParam パラメーター データを使用してバッファーを設定します。
SetParamLength バッファーに格納され、指定されたパラメーターの長さを設定します。
SetParamStatus バッファーに格納され、指定されたパラメーターのステータスを設定します。
SetParamString バッファーに格納され、指定されたパラメーターの文字列データを設定します。

解説

コンシューマーがこのクラスを使用するには、プロバイダーで ICommandWithParameters がサポートされている必要があります。

パラメーター情報は、このクラスによって作成および管理されるバッファーに格納されます。 GetParamGetParamTypeを使用してバッファーからパラメーター データを取得します。

このクラスを使用して SQL Server ストアド プロシージャを実行し、出力パラメーター値を取得する方法を示す例については、GitHub の Microsoft VCSamples リポジトリにある DynamicConsumer のサンプル コードを参照してください。

CDynamicParameterAccessor::CDynamicParameterAccessor

コンストラクター。

構文

typedef CDynamicParameterAccessor _ParamClass;
CDynamicParameterAccessor(
   DBBLOBHANDLINGENUM eBlobHandling = DBBLOBHANDLING_DEFAULT,
   DBLENGTH nBlobSize = 8000 )
   : CDynamicAccessor(eBlobHandling, nBlobSize )

パラメーター

eBlobHandling
BLOB データを処理する方法を指定します。 既定値は DBBLOBHANDLING_DEFAULT です。 DBBLOBHANDLINGENUM 値の説明については、「CDynamicAccessor::SetBlobHandling」を参照してください。

nBlobSize
最大 BLOB サイズ (バイト単位)。この値に対する列データは BLOB として扱われます。 既定値は 8,000 です。 詳細については、「CDynamicAccessor::SetBlobSizeLimit」を参照してください。

解説

BLOB 処理の詳細については、CDynamicAccessor::CDynamicAccessor コンストラクターを参照してください。

CDynamicParameterAccessor::GetParam

パラメーター バッファーから、指定したパラメーターの文字列以外のデータを取得します。

構文

template <class ctype>bool GetParam(DBORDINAL nParam,
   ctype* pData) const throw();

template <class ctype> bool GetParam(TCHAR* pParamName,
   ctype* pData) const throw();

void* GetParam(DBORDINAL nParam) const throw();

void* GetParam(TCHAR* pParamName) const throw();

パラメーター

ctype
データ型であるテンプレート化されたパラメーター。

nParam
[入力] パラメーター番号 (1 からのオフセット)。 パラメーター 0 は戻り値用に予約されています。 パラメーター番号は、SQL またはストアド プロシージャ呼び出しでの順序に基づいたパラメーターのインデックスです。 例については、SetParam に関する記事を参照してください。

pParamName
[in] パラメーターの名前。

pData
[出力] バッファーから取得したデータを格納しているメモリへのポインター。

戻り値

テンプレートを使用しないバージョンでは、バッファーから取得したデータを格納しているメモリを指します。 テンプレートを使用するバージョンでは、正常に終了した場合は true を返し、それ以外の場合は false を返します。

バッファーから文字列以外のパラメーター データを取得するには、GetParam を使用します。 バッファーから文字列のパラメーター データを取得するには、GetParamString を使用します。

CDynamicParameterAccessor::GetParamCount

バッファーに格納されているパラメーターの数を取得します。

構文

DB_UPARAMS GetParamCount() const throw();

戻り値

パラメーターの数。

CDynamicParameterAccessor::GetParamIO

指定されたパラメーターが入力または出力パラメーターであるかどうかを判断します。

構文

bool GetParamIO(DBORDINAL nParam,
   DBPARAMIO* pParamIO) const throw();

パラメーター

nParam
[入力] パラメーター番号 (1 からのオフセット)。 パラメーター 0 は戻り値用に予約されています。 パラメーター番号は、SQL またはストアド プロシージャ呼び出しでの順序に基づいたパラメーターのインデックスです。 例については、SetParam に関する記事を参照してください。

pParamIO
指定されたパラメーターの DBPARAMIO 型 (入力または出力) を格納している変数へのポインター。 これは次のように定義されています。

typedef DWORD DBPARAMIO;

enum DBPARAMIOENUM {
    DBPARAMIO_NOTPARAM   = 0,
    DBPARAMIO_INPUT      = 0x1,
    DBPARAMIO_OUTPUT     = 0x2
};

戻り値

成功した場合は true を返し、失敗した場合は false を返します。

CDynamicParameterAccessor::GetParamLength

バッファーに格納され、指定されたパラメーターの長さを取得します。

構文

bool GetParamLength(DBORDINAL nParam,
   DBLENGTH* pLength);

DBLENGTH* GetParamLength(DBORDINAL nParam) const throw();

パラメーター

nParam
[入力] パラメーター番号 (1 からのオフセット)。 パラメーター 0 は戻り値用に予約されています。 パラメーター番号は、SQL またはストアド プロシージャ呼び出しでの順序に基づいたパラメーターのインデックスです。 例については、SetParam に関する記事を参照してください。

pLength
[出力] 指定されたパラメーターの長さ (バイト単位) を格納している変数へのポインター。

解説

最初のオーバーライドが正常に終了した場合は true を返し、それ以外の場合は false を返します。 2 番目のオーバーライドは、パラメーターの長さを格納しているメモリを指します。

CDynamicParameterAccessor::GetParamName

指定されたパラメーターの名前を取得します。

構文

LPOLESTR GetParamName(DBORDINAL nParam) const throw();

パラメーター

nParam
[入力] パラメーター番号 (1 からのオフセット)。 パラメーター 0 は戻り値用に予約されています。 パラメーター番号は、SQL またはストアド プロシージャ呼び出しでの順序に基づいたパラメーターのインデックスです。 例については、SetParam に関する記事を参照してください。

戻り値

指定されたパラメーターの名前。

CDynamicParameterAccessor::GetParamStatus

バッファーに格納され、指定されたパラメーターのステータスを取得します。

構文

bool GetParamStatus(DBORDINAL nParam,
   DBSTATUS* pStatus);

DBSTATUS* GetParamStatus(DBORDINAL nParam) const throw();

パラメーター

nParam
[入力] パラメーター番号 (1 からのオフセット)。 パラメーター 0 は戻り値用に予約されています。 パラメーター番号は、SQL またはストアド プロシージャ呼び出しでの順序に基づいたパラメーターのインデックスです。 例については、SetParam に関する記事を参照してください。

pStatus
[出力] 指定されたパラメーターの DBSTATUS ステータスを格納している変数へのポインター。 DBSTATUS 値の詳細については、"OLE DB プログラマーズ リファレンス" でステータスを参照するか、oledb.h で「DBSTATUS」を検索してください。

解説

最初のオーバーライドが正常に終了した場合は true を返し、それ以外の場合は false を返します。 2 番目のオーバーライドは、指定されたパラメーターのステータスを格納しているメモリを指します。

CDynamicParameterAccessor::GetParamString

バッファーに格納され、指定されたパラメーターの文字列データを取得します。

構文

bool GetParamString(DBORDINAL nParam,
   CSimpleStringA& strOutput) throw();

bool GetParamString(DBORDINAL nParam,
   CSimpleStringW& strOutput) throw();

bool GetParamString(DBORDINAL nParam,
   CHAR* pBuffer,
   size_t* pMaxLen) throw();

bool GetParamString(DBORDINAL nParam,
   WCHAR* pBuffer,
   size_t* pMaxLen) throw();

パラメーター

nParam
[入力] パラメーター番号 (1 からのオフセット)。 パラメーター 0 は戻り値用に予約されています。 パラメーター番号は、SQL またはストアド プロシージャ呼び出しでの順序に基づいたパラメーターのインデックスです。 例については、SetParam に関する記事を参照してください。

strOutput
[出力] 指定されたパラメーターの ANSI (CSimpleStringA) または Unicode (CSimpleStringW) 文字列データ。 CString 型のパラメーターを渡す必要があります。次に例を示します。

CString MyString;
rs.GetParamString(1, MyString);

pBuffer
[出力] 指定されたパラメーターの ANSI (CHAR) または Unicode (WCHAR) 文字列データへのポインター。

pMaxLen
[出力] pBuffer が指すバッファーのサイズへのポインター (終端の NULL を含む文字)。

解説

成功した場合は true を返し、失敗した場合は false を返します。

pBuffer が NULL の場合、このメソッドは pMaxLen が指すメモリ内の必要なバッファー サイズを設定し、データをコピーせずに true を返します。

pBuffer バッファーが文字列全体を格納するのに十分なサイズでない場合、このメソッドは失敗します。

バッファーから文字列のパラメーター データを取得するには、GetParamString を使用します。 バッファーから文字列以外のパラメーター データを取得するには、GetParam を使用します。

CDynamicParameterAccessor::GetParamType

指定されたパラメーターのデータ型を取得します。

構文

bool GetParamType(DBORDINAL nParam,
   DBTYPE* pType) const throw();

パラメーター

nParam
[入力] パラメーター番号 (1 からのオフセット)。 パラメーター 0 は戻り値用に予約されています。 パラメーター番号は、SQL またはストアド プロシージャ呼び出しでの順序に基づいたパラメーターのインデックスです。 例については、SetParam に関する記事を参照してください。

pType
[出力] 指定されたパラメーターのデータ型を含んでいる変数へのポインター。

戻り値

成功した場合は true を返し、失敗した場合は false を返します。

CDynamicParameterAccessor::SetParam

指定した (文字列ではない) データを使用して、パラメーター バッファーを設定します。

構文

template <class ctype>
bool SetParam(DBORDINAL nParam,
   constctype* pData,
   DBSTATUS status = DBSTATUS_S_OK) throw();

template <class ctype>
bool SetParam(TCHAR* pParamName,
   const ctype* pData,
   DBSTATUS status = DBSTATUS_S_OK) throw();

パラメーター

ctype
データ型であるテンプレート化されたパラメーター。

nParam
[入力] パラメーター番号 (1 からのオフセット)。 パラメーター 0 は戻り値用に予約されています。 パラメーター番号は、SQL またはストアド プロシージャ呼び出しでの順序に基づいたパラメーターのインデックスです。 次に例を示します。

WCHAR* wszSQL = L"SELECT * FROM Authors WHERE State='?' AND LName='?'";

CCommand<CDynamicParameterAccessor> rs;
//...
rs.SetParam<LONG>(1, &m_BillingID);
rs.SetParam<CString>(2, &m_strFirstName);

pParamName
[in] パラメーターの名前。

pData
[入力] バッファーに書き込まれるデータを格納しているメモリへのポインター。

status
[入力] DBSTATUS 列のステータスです。 DBSTATUS 値の詳細については、"OLE DB プログラマーズ リファレンス" でステータスを参照するか、oledb.h で「DBSTATUS」を検索してください。

戻り値

成功した場合は true を返し、失敗した場合は false を返します。

バッファーに文字列以外のパラメーター データを設定するには、SetParam を使用します。 SetParamString を使用して、バッファーに文字列のパラメーター データを設定します。

CDynamicParameterAccessor::SetParamLength

バッファーに格納され、指定されたパラメーターの長さを設定します。

構文

bool SetParamLength(DBORDINAL nParam,
   DBLENGTH length);

パラメーター

nParam
[入力] パラメーター番号 (1 からのオフセット)。 パラメーター 0 は戻り値用に予約されています。 パラメーター番号は、SQL またはストアド プロシージャ呼び出しでの順序に基づいたパラメーターのインデックスです。 例については、SetParam に関する記事を参照してください。

length
[入力] 指定したパラメーターの長さ (バイト単位)。

解説

成功した場合は true を返し、失敗した場合は false を返します。

CDynamicParameterAccessor::SetParamStatus

バッファーに格納され、指定されたパラメーターのステータスを設定します。

構文

bool SetParamStatus(DBORDINAL nParam,
   DBSTATUS status);

パラメーター

nParam
[入力] パラメーター番号 (1 からのオフセット)。 パラメーター 0 は戻り値用に予約されています。 パラメーター番号は、SQL またはストアド プロシージャ呼び出しでの順序に基づいたパラメーターのインデックスです。 例については、SetParam に関する記事を参照してください。

status
[入力] 指定したパラメーターの DBSTATUS ステータス。 DBSTATUS 値の詳細については、"OLE DB プログラマーズ リファレンス" でステータスを参照するか、oledb.h で「DBSTATUS」を検索してください。

解説

成功した場合は true を返し、失敗した場合は false を返します。

CDynamicParameterAccessor::SetParamString

バッファーに格納され、指定されたパラメーターの文字列データを設定します。

構文

bool SetParamString(DBORDINAL nParam,
   constCHAR* pString,
   DBSTATUS status = DBSTATUS_S_OK) throw();bool SetParamString(DBORDINAL nParam,
   constWCHAR* pString,
   DBSTATUS status = DBSTATUS_S_OK) throw();

パラメーター

nParam
[入力] パラメーター番号 (1 からのオフセット)。 パラメーター 0 は戻り値用に予約されています。 パラメーター番号は、SQL またはストアド プロシージャ呼び出しでの順序に基づいたパラメーターのインデックスです。 例については、SetParam に関する記事を参照してください。

pString
[入力] 指定されたパラメーターの ANSI (CHAR) または Unicode (WCHAR) 文字列データへのポインター。 oledb.h の DBSTATUS を参照してください。

status
[入力] 指定したパラメーターの DBSTATUS ステータス。 DBSTATUS 値の詳細については、"OLE DB プログラマーズ リファレンス" でステータスを参照するか、oledb.h で「DBSTATUS」を検索してください。

解説

成功した場合は true を返し、失敗した場合は false を返します。

SetParamString は、pString に指定された最大サイズより大きい文字列を設定しようとすると失敗します。

バッファーに文字列のパラメーター データを設定するには、SetParamString を使用します。 バッファーに文字列以外のパラメーター データを設定するには、SetParam を使用します。

関連項目

OLE DB コンシューマー テンプレートに関するページ
OLE DB コンシューマー テンプレート リファレンス
CAccessor クラス
CDynamicAccessor クラス
CManualAccessor クラス