CRowsetImpl クラス
多くの実装インターフェイスの多重継承を必要としない、標準の OLE DB 行セット実装を提供します。
構文
template <
class T,
class Storage,
class CreatorClass,
class ArrayType = CAtlArray<Storage>,
class RowClass = CSimpleRow,
class RowsetInterface = IRowsetImpl <T, IRowset>
>
class CRowsetImpl :
public CComObjectRootEx<CreatorClass::_ThreadModel>,
public CRowsetBaseImpl<T, Storage, ArrayType, RowsetInterface>,
public IRowsetInfoImpl<T, CreatorClass::_PropClass>
パラメーター
T
CRowsetImpl
から派生したユーザーのクラス。
Storage
ユーザー レコード クラス。
CreatorClass
行セットのプロパティを含んだクラス。通常はコマンドです。
ArrayType
行セットのデータのストレージとして機能するクラス。 このパラメーターの既定値は CAtlArray
ですが、必要な機能をサポートする任意のクラスを指定できます。
要件
ヘッダー: atldb.h
メンバー
メソッド
Name | 説明 |
---|---|
NameFromDBID | DBID から文字列を抽出し、渡された bstr にそれをコピーします。 |
SetCommandText | 2 つの文字列 (m_strCommandText と m_strIndexText) 内の DBID を検証し、格納します。 |
オーバーライド可能なメソッド
名前 | 説明 |
---|---|
GetColumnInfo | 特定のクライアント要求の列情報を取得します。 |
GetCommandFromID | いずれかまたは両方のパラメーターに文字列値が含まれているかどうかを確認します。含まれている場合は、データ メンバー m_strCommandText および m_strIndexText に文字列値をコピーします。 |
ValidateCommandID | いずれかまたは両方の DBID に文字列値が含まれているかどうかを確認します。含まれている場合は、それらをデータ メンバー m_strCommandText および m_strIndexText にコピーします。 |
データ メンバー
名前 | 説明 |
---|---|
m_rgRowData | 既定では、ユーザー レコード テンプレート引数を CRowsetImpl へとテンプレート化する CAtlArray です。 ArrayType テンプレート引数を CRowsetImpl に変更することで、別の配列型クラスを使用することもできます。 |
m_strCommandText | 行セットの初期コマンドが含まれます。 |
m_strIndexText | 行セットの初期インデックスが含まれます。 |
解説
CRowsetImpl
は、静的アップキャストの形式でオーバーライドを提供します。 メソッドは、特定の行セットでコマンド テキストがどのように検証されるかを制御します。 実装インターフェイスを多重継承にすることで、独自の CRowsetImpl
スタイル クラスを作成できます。 実装を提供する必要があるメソッドは Execute
のみです。 作成する行セットの種類によっては、Creator メソッドで Execute
に対して異なるシグネチャが予期されます。 たとえば、CRowsetImpl
の派生クラスを使用してスキーマ行セットを実装する場合、Execute
メソッドでは次のシグネチャが使用されます。
HRESULT Execute(LONG* pcRows, ULONG cRestrictions, const VARIANT* rgRestrictions)
CRowsetImpl
の派生クラスを作成してコマンドまたはセッションの行セットを実装する場合、Execute
メソッドでは次のシグネチャが使用されます。
HRESULT Execute(LONG* pcRows, DBPARAMS* pParams)
CRowsetImpl
から派生した Execute
メソッドを実装するには、内部データ バッファー (m_rgRowData) を設定する必要があります。
CRowsetImpl::NameFromDBID
DBID
から文字列を抽出し、渡された bstr にそれをコピーします。
構文
HRESULT CRowsetBaseImpl::NameFromDBID(DBID* pDBID,
CComBSTR& bstr,
bool bIndex);
パラメーター
pDBID
[入力] 文字列の抽出元となる DBID
へのポインター。
bstr
[入力] DBID
文字列のコピーを配置するための CComBSTR 参照。
bIndex
[入力] インデックス DBID
の場合は true
。テーブル DBID
の場合は false
。
戻り値
標準の HRESULT。 DBID
がテーブルかインデックスか (bIndex によって示されます) によって、メソッドは DB_E_NOINDEX または DB_E_NOTABLE を返します。
解説
このメソッドは、ValidateCommandID と GetCommandFromID の CRowsetImpl
実装によって呼び出されます。
CRowsetImpl::SetCommandText
2 つの文字列 (m_strCommandText と m_strIndexText) 内の DBID
を検証し、格納します。
構文
HRESULT CRowsetBaseImpl::SetCommandText(DBID* pTableID,
DBID* pIndexID);
パラメーター
pTableID
[入力] テーブル ID を表す DBID
へのポインター。
pIndexID
[入力] インデックス ID を表す DBID
へのポインター。
戻り値
標準の HRESULT。
解説
SetCommentText
メソッドは、IOpenRowsetImpl
の静的テンプレート化メソッドである CreateRowset
によって呼び出されます。
このメソッドは、アップキャスト ポインターを通じて ValidateCommandID と GetCommandFromID を呼び出すことで、その機能を委任します。
CRowsetImpl::GetColumnInfo
特定のクライアント要求の列情報を取得します。
構文
static ATLCOLUMNINFO* CRowsetBaseImpl::GetColumnInfo(T* pv,
ULONG* pcCols);
パラメーター
pv
[入力] ユーザーの CRowsetImpl
派生クラスへのポインター。
pcCols
[入力] 返される列の数へのポインター (出力)。
戻り値
静的 ATLCOLUMNINFO
構造体へのポインター。
解説
このメソッドは高度なオーバーライドです。
このメソッドは、特定のクライアント要求の列情報を取得するために、いくつかの基本実装クラスによって呼び出されます。 通常、このメソッドは IColumnsInfoImpl
によって呼び出されます。 このメソッドをオーバーライドする場合は、CRowsetImpl
の派生クラスにメソッドのバージョンを配置する必要があります。 メソッドは非テンプレート化クラスに配置される可能性があるため、pv を適切な CRowsetImpl
派生クラスに変更する必要があります。
次の例は、GetColumnInfo
の使用方法を示したものです。 この例では、CMyRowset
が CRowsetImpl
の派生クラスです。 このクラスのすべてのインスタンスに対して GetColumnInfo
をオーバーライドするには、CMyRowset
クラス定義に次のメソッドを配置します。
static ATLCOLUMNINFO* GetColumnInfo(CCustomRowset* pRowset, DBORDINAL* pcCols)
{
// Add your implementation here and/or call the base class
return CRowsetImpl::GetColumnInfo(pRowset, pcCols);
}
CRowsetImpl::GetCommandFromID
いずれかまたは両方のパラメーターに文字列値が含まれているかどうかを確認します。含まれている場合は、データ メンバー m_strCommandText および m_strIndexText に文字列値をコピーします。
構文
HRESULT CRowsetBaseImpl::GetCommandFromID(DBID* pTableID,
DBID* pIndexID);
パラメーター
pTableID
[入力] テーブル ID を表す DBID
へのポインター。
pIndexID
[入力] インデックス ID を表す DBID
へのポインター。
戻り値
標準の HRESULT。
解説
このメソッドは、データ メンバー m_strCommandText および m_strIndexText を設定するために、CRowsetImpl
によって静的アップキャストを通じて呼び出されます。 既定では、このメソッドは、いずれかまたは両方のパラメーターに文字列値が含まれているかどうかを確認します。 文字列値が含まれている場合、このメソッドは文字列値をデータ メンバーにコピーします。 このシグネチャを持つメソッドを CRowsetImpl
の派生クラス内に配置すると、基本実装の代わりに、そのメソッドが呼び出されます。
CRowsetImpl::ValidateCommandID
いずれかまたは両方の DBID
に文字列値が含まれているかどうかを確認します。含まれている場合は、それらをデータ メンバー m_strCommandText および m_strIndexText にコピーします。
構文
HRESULT CRowsetBaseImpl::ValidateCommandID(DBID* pTableID,
DBID* pIndexID);
パラメーター
pTableID
[入力] テーブル ID を表す DBID
へのポインター。
pIndexID
[入力] インデックス ID を表す DBID
へのポインター。
戻り値
標準の HRESULT。
解説
このメソッドは、データ メンバー m_strCommandText および m_strIndexText を設定するために、CRowsetImpl
によって静的アップキャストを通じて呼び出されます。 既定では、このメソッドは、いずれかまたは両方の DBID
に文字列値が含まれているかどうかを確認します。含まれている場合には、それらをデータ メンバーにコピーします。 このシグネチャを持つメソッドを CRowsetImpl
の派生クラス内に配置すると、基本実装の代わりに、そのメソッドが呼び出されます。
CRowsetImpl::m_rgRowData
既定では、ユーザー レコード テンプレート引数を CRowsetImpl
へとテンプレート化する CAtlArray
です。
構文
ArrayType CRowsetBaseImpl::m_rgRowData;
解説
ArrayType は、CRowsetImpl
のテンプレート パラメーターです。
CRowsetImpl::m_strCommandText
行セットの初期コマンドが含まれます。
構文
CComBSTR CRowsetBaseImpl::m_strCommandText;
CRowsetImpl::m_strIndexText
行セットの初期インデックスが含まれます。
構文
CComBSTR CRowsetBaseImpl::m_strIndexText;