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.
Provides an implementation of the IRowset
interface.
Syntax
template <
class T,
class RowsetInterface,
class RowClass = CSimpleRow,
class MapClass = CAtlMap <
RowClass::KeyType,
RowClass*>>
class ATL_NO_VTABLE IRowsetImpl : public RowsetInterface
Parameters
T
Your class, derived from IRowsetImpl
.
RowsetInterface
A class derived from IRowsetImpl
.
RowClass
Storage unit for the HROW
.
MapClass
Storage unit for all row handles held by the provider.
Requirements
Header: atldb.h
Members
Methods
Name | Description |
---|---|
AddRefRows | Adds a reference count to an existing row handle. |
CreateRow | Called by GetNextRows to allocate a new HROW . Not called directly by user. |
GetData | Retrieves data from the rowset's copy of the row. |
GetDBStatus | Returns the status for the specified field. |
GetNextRows | Fetches rows sequentially, remembering the previous position. |
IRowsetImpl | The constructor. Not called directly by user. |
RefRows | Called by AddRefRows and ReleaseRows. Not called directly by user. |
ReleaseRows | Releases rows. |
RestartPosition | Repositions the next fetch position to its initial position; that is, its position when the rowset was first created. |
SetDBStatus | Sets the status flags for the specified field. |
Data Members
Name | Description |
---|---|
m_bCanFetchBack | Indicates whether a provider supports backward fetching. |
m_bCanScrollBack | Indicates whether a provider can have its cursor scroll backwards. |
m_bReset | Indicates whether a provider has reset its cursor position. This has special meaning when scrolling backwards or fetching backwards in GetNextRows. |
m_iRowset | An index to the rowset, representing the cursor. |
m_rgRowHandles | A list of row handles. |
Remarks
IRowset is the base rowset interface.
IRowsetImpl::AddRefRows
Adds a reference count to an existing row handle.
Syntax
STDMETHOD(AddRefRows )(DBCOUNTITEM cRows,
const HROW rghRows[],
DBREFCOUNT rgRefCounts[],
DBROWSTATUS rgRowStatus[]);
Parameters
See IRowset::AddRefRows in the OLE DB Programmer's Reference.
IRowsetImpl::CreateRow
A helper method called by GetNextRows to allocate a new HROW
.
Syntax
HRESULT CreateRow(DBROWOFFSET lRowsOffset,
DBCOUNTITEM& cRowsObtained,
HROW* rgRows);
Parameters
lRowsOffset
Cursor position of the row being created.
cRowsObtained
A reference passed back to the user indicating the number of rows created.
rgRows
An array of HROW
s returned to the caller with the newly created row handles.
Remarks
If the row exists, this method calls AddRefRows and returns. Otherwise, it allocates a new instance of the RowClass template variable and adds it to m_rgRowHandles.
IRowsetImpl::GetData
Retrieves data from the rowset's copy of the row.
Syntax
STDMETHOD(GetData )(HROW hRow,
HACCESSOR hAccessor,
void* pDstData);
Parameters
See IRowset::GetData in the OLE DB Programmer's Reference.
Some parameters correspond to OLE DB Programmer's Reference parameters of different names, which are described in IRowset::GetData
:
OLE DB Template parameters | OLE DB Programmer's Reference parameters |
---|---|
pDstData | pData |
Remarks
Also handles data conversion using the OLE DB data conversion DLL.
IRowsetImpl::GetDBStatus
Returns the DBSTATUS status flags for the specified field.
Syntax
virtual DBSTATUS GetDBStatus(RowClass* currentRow,
ATLCOLUMNINFO* columnNames);
Parameters
currentRow
[in] The current row.
columnNames
[in] The column for which status is being requested.
Return Value
The DBSTATUS flags for the column.
IRowsetImpl::GetNextRows
Fetches rows sequentially, remembering the previous position.
Syntax
STDMETHOD(GetNextRows )(HCHAPTER hReserved,
DBROWOFFSET lRowsOffset,
DBROWCOUNT cRows,
DBCOUNTITEM* pcRowsObtained,
HROW** prghRows);
Parameters
See IRowset::GetNextRows in the OLE DB Programmer's Reference.
IRowsetImpl::IRowsetImpl
The constructor.
Syntax
IRowsetImpl();
Remarks
You usually do not need to call this method directly.
IRowsetImpl::RefRows
Called by AddRefRows and ReleaseRows to either increment or release a reference count to an existing row handle.
Syntax
HRESULT RefRows(DBCOUNTITEM cRows,
const HROWrghRows[],
DBREFCOUNT rgRefCounts[],
DBROWSTATUS rgRowStatus[],
BOOL bAdd);
Parameters
See IRowset::AddRefRows in the OLE DB Programmer's Reference.
Return Value
A standard HRESULT value.
IRowsetImpl::ReleaseRows
Releases rows.
Syntax
STDMETHOD(ReleaseRows )(DBCOUNTITEM cRows,
const HROW rghRows[],
DBROWOPTIONS rgRowOptions[],
DBREFCOUNT rgRefCounts[],
DBROWSTATUS rgRowStatus[]);
Parameters
See IRowset::ReleaseRows in the OLE DB Programmer's Reference.
IRowsetImpl::RestartPosition
Repositions the next fetch position to its initial position; that is, its position when the rowset was first created.
Syntax
STDMETHOD(RestartPosition )(HCHAPTER /* hReserved */);
Parameters
See IRowset::RestartPosition in the OLE DB Programmer's Reference.
Remarks
The rowset position is undefined until GetNextRow
is called. You can move backwards in a rowet by calling RestartPosition
and then fetching or scrolling backwards.
IRowsetImpl::SetDBStatus
Sets the DBSTATUS status flags for the specified field.
Syntax
virtual HRESULT SetDBStatus(DBSTATUS* statusFlags,
RowClass* currentRow,
ATLCOLUMNINFO* columnInfo);
Parameters
statusFlags
The DBSTATUS flags to set for the column.
currentRow
The current row.
columnInfo
The column for which status is being set.
Return Value
A standard HRESULT value.
Remarks
The provider overrides this function to provide special processing for DBSTATUS_S_ISNULL and DBSTATUS_S_DEFAULT.
IRowsetImpl::m_bCanFetchBack
Indicates whether a provider supports backward fetching.
Syntax
unsigned m_bCanFetchBack:1;
Remarks
Linked to the DBPROP_CANFETCHBACKWARDS
property in the DBPROPSET_ROWSET
group. The provider must support DBPROP_CANFETCHBACKWARDS
for m_bCanFetchBackwards
to be true
.
IRowsetImpl::m_bCanScrollBack
Indicates whether a provider can have its cursor scroll backwards.
Syntax
unsigned m_bCanScrollBack:1;
Remarks
Linked to the DBPROP_CANSCROLLBACKWARDS
property in the DBPROPSET_ROWSET
group. The provider must support DBPROP_CANSCROLLBACKWARDS
for m_bCanFetchBackwards
to be true
.
IRowsetImpl::m_bReset
A bit flag used to determine if the cursor position is defined on the rowset.
Syntax
unsigned m_bReset:1;
Remarks
If the consumer calls GetNextRows with a negative lOffset
or cRows and m_bReset
is true, GetNextRows
moves to the end of the rowset. If m_bReset
is false, the consumer receives an error code, in conformance with the OLE DB specification. The m_bReset
flag gets set to true
when the rowset is first created and when the consumer calls IRowsetImpl::RestartPosition. It gets set to false
when you call GetNextRows
.
IRowsetImpl::m_iRowset
An index to the rowset, representing the cursor.
Syntax
DBROWOFFSET m_iRowset;
IRowsetImpl::m_rgRowHandles
A map of row handles currently contained by the provider in response to GetNextRows
.
Syntax
MapClass m_rgRowHandles;
Remarks
Row handles are removed by calling ReleaseRows
. See the IRowsetImpl overview for the definition of MapClass.
See also
OLE DB Provider Templates
OLE DB Provider Template Architecture
CSimpleRow Class