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 クラス