Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The following code fragment shows how a consumer might use IRowPosition when traversing a rowset:
IRowPosition *pRowPosition = NULL;
HRESULT hr;
hr = CoCreateInstance(CLSID_OLEDB_ROWPOSITIONLIBRARY, NULL,
CLSCTX_INPROC_SERVER, IID_IRowPosition,
(LPVOID *)&pRowPosition);
if (FAILED(hr))
return hr;
hr = pRowPosition->Initialize(pRowset); // Initialize with pRowset
if (FAILED(hr))
{
pRowPosition->Release();
return hr;
}
// Read the rows--100 rows at a time into the rowset.
while (SUCCEEDED(hr = pRowset->GetNextRows(NULL, 0, 100, &cRowsObtained, &rghRows))
&& cRowsObtained)
{
for (irow = 0; irow < cRowsObtained; irow++)
{
// GetData copies the rows into the local buffers, performing the
// type conversions specified in the binding structures associated
// with the accessor.
pRowset->GetData(rghRows[irow], hAccessor, (void*) rgData);
// Set currently read row as "current row."
// Note: Other clients will choose different notions
// of current row.
if (pRowPosition->ClearRowPosition () == S_OK)
pRowPosition->SetRowPosition (NULL, rghRows[irow],
DBPOSITION_OK);
// Convenience function to print the data
PrintData(rgData);
}
// Release the rows just printed from the rowset.
pRowset->ReleaseRows(cRowsObtained, rghRows, NULL, NULL, NULL);
}