CBulkRowset クラス
1 回の呼び出しで複数の行ハンドルを取得し、データを一括して操作するために、行をフェッチし、操作します。
構文
template <class TAccessor>
class CBulkRowset : public CRowset<TAccessor>
パラメーター
TAccessor
アクセサー クラス。
要件
ヘッダー: atldbcli.h
メンバー
メソッド
Name | 説明 |
---|---|
AddRefRows | 参照カウントをインクリメントします。 |
CBulkRowset | コンストラクターです。 |
MoveFirst | 最初のデータ行を取得し、必要に応じて新しい一括フェッチを実行します。 |
MoveLast | 最後の行に移動します。 |
MoveNext | 次のデータ行を取得します。 |
MovePrev | 前の行に移動します。 |
MoveToBookmark | ブックマークで示された行、またはそのブックマークの指定したオフセット位置にある行をフェッチします。 |
MoveToRatio | 行セット内の分数位置から始まる行をフェッチします。 |
ReleaseRows | 現在の行 (m_nCurrentRow ) を 0 に設定し、すべての行を解放します。 |
SetRows | 1 回の呼び出しで取得する行ハンドルの数を設定します。 |
例
CBulkRowset
クラスの使用方法を次の例に示します。
class CCustomerData
{
public:
char m_szField1[50];
BEGIN_COLUMN_MAP(CCustomerData)
COLUMN_ENTRY(1, m_szField1)
END_COLUMN_MAP()
};
void DoCBulkRowsetTest()
{
CoInitialize(NULL);
CCommand<CAccessor<CCustomerData>, CBulkRowset > cmd;
CDataSource ds;
// Open up data link dialogs to create a data source
ds.Open();
CSession session;
session.Open(ds);
// Could call SetRows() here if you want to fetch
// more than 10 HROWs at a time.
cmd.Open(session, L"Select * from customer");
cmd.MoveFirst();
// Note that the CBulkRowset by default fetched 10 HROWs at a time
// so that the MoveNext call will not have to make the GetNextRows
// call to get the second HROW because it has already been fetched
//by the MoveFirst() call above.
cmd.MoveNext();
cmd.Close();
session.Close();
ds.Close();
}
CBulkRowset::AddRefRows
IRowset::AddRefRows を呼び出し、バルク行セットから現在取得されているすべての行の参照カウントをインクリメントします。
構文
HRESULT AddRefRows() throw();
戻り値
標準の HRESULT。
CBulkRowset::CBulkRowset
新しい CBulkRowset
オブジェクトを作成し、既定の行数を 10 に設定します。
構文
CBulkRowset();
CBulkRowset::MoveFirst
最初のデータ行を取得します。
構文
HRESULT MoveFirst() throw();
戻り値
標準の HRESULT。
CBulkRowset::MoveLast
最後の行に移動します。
構文
HRESULT MoveLast() throw();
戻り値
標準の HRESULT。
CBulkRowset::MoveNext
次のデータ行を取得します。
構文
HRESULT MoveNext() throw();
戻り値
標準の HRESULT。 行セットの最後に達すると、DB_S_ENDOFROWSET を返します。
CBulkRowset::MovePrev
前の行に移動します。
構文
HRESULT MovePrev() throw();
戻り値
標準の HRESULT。
CBulkRowset::MoveToBookmark
ブックマークで示された行、またはそのブックマークの指定したオフセット (lSkip) 位置にある行をフェッチします。
構文
HRESULT MoveToBookmark(const CBookmarkBase& bookmark,
DBCOUNTITEM lSkip = 0) throw();
パラメーター
bookmark
[入力] データをフェッチする位置を示すブックマーク。
lSkip
[入力] ブックマークからターゲット行までの行数。 lSkip が 0 の場合、フェッチされる最初の行はブックマークされた行です。 lSkip が 1 の場合、フェッチされる最初の行はブックマークされた行の次の行です。 lSkip が -1 の場合、フェッチされる最初の行はブックマークされた行の前の行です。
戻り値
「OLE DB プログラマーズ リファレンス」の「IRowset::GetData」を参照してください。
CBulkRowset::MoveToRatio
行セット内の分数位置から始まる行をフェッチします。
構文
HRESULT MoveToRatio(DBCOUNTITEM nNumerator,
DBCOUNTITEM nDenominator)throw();
パラメーター
nNumerator
[入力] データをフェッチする分数位置を決定するために使われる分子。
nDenominator
[入力] データをフェッチする分数位置を決定するために使われる分母。
戻り値
標準の HRESULT。
解説
MoveToRatio
を使うと、おおよそ次の式に従って行をフェッチします。
(nNumerator * RowsetSize ) / nDenominator
この RowsetSize
は行セット サイズであり、単位は行数です。 この数式の正確性は、プロバイダーによって異なります。 詳細については、「OLE DB プログラマーズ リファレンス」の「IRowsetScroll::GetRowsAtRatio」を参照してください。
CBulkRowset::ReleaseRows
IRowset::ReleaseRows を呼び出し、バルク行セットから現在取得されているすべての行の参照カウントをデクリメントします。
構文
HRESULT ReleaseRows() throw();
戻り値
標準の HRESULT。
CBulkRowset::SetRows
各呼び出しで取得する行ハンドルの数を設定します。
構文
void SetRows(DBROWCOUNT nRows) throw();
パラメーター
nRows
[入力] 行セットの新しいサイズ (行数)。
解説
この関数は、行セットを開く前に呼び出す必要があります。