CCustomRowset (CustomRS.H)
向导为行集对象生成一个条目。 在本例中,它称为 CCustomRowset
。 CCustomRowset
类继承自名为 CRowsetImpl
的 OLE DB 提供程序类,该类实现行集对象的所有必要接口。 以下代码显示 CRowsetImpl
的继承链:
template <class T, class Storage, class CreatorClass,
class ArrayType = CAtlArray<Storage>>
class CMyRowsetImpl:
public CRowsetImpl<T, Storage, CreatorClass, ArrayType,
CSimpleRow, IRowsetLocateImpl< T >>
CRowsetImpl
还使用 IAccessor
和 IColumnsInfo
接口。 它将这些接口用于表中的输出字段。 该类还提供了 IRowsetIdentity
的实现,使得使用者能够确定两行是否相同。 IRowsetInfo
接口实现行集对象的属性。 IConvertType
接口使提供程序能够解决使用者请求的数据类型与提供程序使用的数据类型之间的差异。
IRowset
接口实际上处理数据检索。 使用者首先调用一个名为 GetNextRows
的方法来返回一行的句柄,称为 HROW
。 然后,使用者使用该 HROW
调用 IRowset::GetData
以检索请求的数据。
CRowsetImpl
还采用几个模板参数。 通过这些参数,可以确定 CRowsetImpl
类如何处理数据。 ArrayType
参数可用于确定用于存储行数据的存储机制。 RowClass 参数指定包含 HROW
的类。
通过 RowsetInterface 参数还可以使用 IRowsetLocate
或 IRowsetScroll
接口。 IRowsetLocate
和 IRowsetScroll
接口都继承自 IRowset
。 因此,OLE DB 提供程序模板必须为这些接口提供特殊处理。 如果要使用其中任何一个接口,都需要使用该参数。