CDynamicStringAccessor クラス
データベース スキーマ (データベースの基になる構造) に詳しくない場合でもデータ ソースにアクセスできます。
構文
template< typename BaseType, DBTYPEENUM OleDbType >
class CDynamicStringAccessorT : public CDynamicAccessor
必要条件
ヘッダー: atldbcli.h
メンバー
メソッド
Name | 説明 |
---|---|
GetString | 指定された列のデータを文字列として取得します。 |
SetString | 指定された列のデータを文字列として設定します。 |
解説
CDynamicAccessor はプロバイダーによって報告されるネイティブ形式でデータを要求するのに対し、CDynamicStringAccessor
は、データ ストアからアクセスされるすべてのデータを文字列データとしてフェッチするようプロバイダーに要求します。 これは、データ ストアの内容の表示や印刷など、データ ストアの値を計算する必要がない単純なタスクに特に便利です。
データ ストア内の列データのネイティブ型は重要ではありません。プロバイダーがデータ変換をサポートできる限り、データは文字列形式で提供されます。 プロバイダーがネイティブ データ型から文字列への変換をサポートしていない場合 (一般的ではありません)、要求元の呼び出しからは成功値 DB_S_ERRORSOCCURED が返り、対応する列の状態は DBSTATUS_E_CANTCONVERTVALUE で変換の問題を示します。
CDynamicStringAccessor
メソッドを使用して列情報を取得します。 この列情報を使って、実行時にアクセサーを動的に作成します。
列情報は、このクラスによって作成および管理されるバッファーに格納されます。 バッファーからデータを取得するには GetString を使い、バッファーにデータを格納するには SetString を使います。
動的アクセサー クラスを使う方法の説明と例については、「動的アクセサーの使用」を参照してください。
CDynamicStringAccessor::GetString
指定された列のデータを文字列として取得します。
構文
BaseType* GetString(DBORDINAL nColumn) const throw();
BaseType* GetString(const CHAR* pColumnName) const throw();
BaseType* GetString(const WCHAR* pColumnName) const throw();
パラメーター
nColumn
[入力] 列番号。 列番号は 1 から始まります。 値 0 は、ブックマーク列がある場合はそれを示します。
pColumnName
[入力] 列の名前を含む文字列へのポインター。
戻り値
指定した列から取得された文字列値へのポインター。 値は BaseType
型であり、_UNICODE が定義されているかどうかにより CHAR または WCHAR になります。 指定された列が見つからない場合は NULL を返します。
解説
2 番目のオーバーライド形式は、列名を ANSI 文字列として受け取ります。 3 番目のオーバーライド形式は、列名を Unicode 文字列として受け取ります。
CDynamicStringAccessor::SetString
指定された列のデータを文字列として設定します。
構文
HRESULT SetString(DBORDINAL nColumn,
BaseType* data) throw();
HRESULT SetString(const CHAR* pColumnName,
BaseType* data) throw();
HRESULT SetString(const WCHAR* pColumnName,
BaseType* data) throw();
パラメーター
nColumn
[入力] 列番号。 列番号は 1 から始まります。 特別な値 0 は、ブックマーク列がある場合にそれを示します。
pColumnName
[入力] 列の名前を含む文字列へのポインター。
data
[入力] 指定された列に書き込む文字列データへのポインター。
戻り値
指定された列を設定する文字列値へのポインター。 値は BaseType
型であり、_UNICODE が定義されているかどうかにより CHAR または WCHAR になります。
解説
2 番目のオーバーライド形式は列名を ANSI 文字列として受け取り、3 番目のオーバーライド形式は列名を Unicode 文字列として受け取ります。
_SECURE_ATL に 0 以外の値が定義されている場合、入力 data 文字列が参照されているデータ列の最大許容長より長いと、ランタイム アサーション エラーが生成されます。 それ以外の場合は、入力文字列が許容最大長を超えると、切り捨てられます。
関連項目
OLE DB コンシューマー テンプレートに関するページ
OLE DB コンシューマー テンプレート リファレンス
CAccessor クラス
CDynamicParameterAccessor クラス
CManualAccessor クラス
CDynamicAccessor クラス
CDynamicStringAccessorA クラス
CDynamicStringAccessorW クラス
CXMLAccessor クラス
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示