次の方法で共有


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