CDynamicParameterAccessor クラス
CDynamicAccessor と類似していますが、 ICommandWithParameters インターフェイスを呼び出すことで設定されるパラメーター情報を取得します。
構文
class CDynamicParameterAccessor : public CDynamicAccessor
要件
ヘッダー: atldbcli.h
メンバー
メソッド
Name | 説明 |
---|---|
CDynamicParameterAccessor | コンストラクター。 |
GetParam | バッファーからパラメーター データを取得します。 |
GetParamCount | アクセサー内のパラメーターの数を取得します。 |
GetParamIO | 指定されたパラメーターが入力または出力パラメーターであるかどうかを判断します。 |
GetParamLength | バッファーに格納され、指定されたパラメーターの長さを取得します。 |
GetParamName | 指定されたパラメーターの名前を取得します。 |
GetParamStatus | バッファーに格納され、指定されたパラメーターのステータスを取得します。 |
GetParamString | バッファーに格納され、指定されたパラメーターの文字列データを取得します。 |
GetParamType | 指定されたパラメーターのデータ型を取得します。 |
SetParam | パラメーター データを使用してバッファーを設定します。 |
SetParamLength | バッファーに格納され、指定されたパラメーターの長さを設定します。 |
SetParamStatus | バッファーに格納され、指定されたパラメーターのステータスを設定します。 |
SetParamString | バッファーに格納され、指定されたパラメーターの文字列データを設定します。 |
解説
コンシューマーがこのクラスを使用するには、プロバイダーで ICommandWithParameters
がサポートされている必要があります。
パラメーター情報は、このクラスによって作成および管理されるバッファーに格納されます。 GetParam と GetParamTypeを使用してバッファーからパラメーター データを取得します。
このクラスを使用して 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 クラス