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
[入力] 行セットの新しいサイズ (行数)。

解説

この関数は、行セットを開く前に呼び出す必要があります。

関連項目

OLE DB コンシューマー テンプレートに関するページ
OLE DB コンシューマー テンプレート リファレンス