CCustomSession (CustomSess.H)
CustomSess.H 包含 OLE DB 会话对象的声明和实现。 数据源对象创建会话对象,并表示使用者和提供程序之间的对话。 可以为一个数据源打开多个同时会话。 以下的 CCustomSession
继承列表:
/////////////////////////////////////////////////////////////////////////
// CCustomSession
class ATL_NO_VTABLE CCustomSession :
public CComObjectRootEx<CComSingleThreadModel>,
public IGetDataSourceImpl<CCustomSession>,
public IOpenRowsetImpl<CCustomSession>,
public ISessionPropertiesImpl<CCustomSession>,
public IObjectWithSiteSessionImpl<CCustomSession>,
public IDBSchemaRowsetImpl<CCustomSession>,
public IDBCreateCommandImpl<CCustomSession, CCustomCommand>
会话对象继承自 IGetDataSource
、IOpenRowset
、ISessionProperties
和 IDBCreateCommand
。 该 IGetDataSource
接口允许会话检索创建它的数据源。 如果需要从创建的数据源获取属性,或者从数据源可以提供的其他信息获取属性,这非常有用。 接口 ISessionProperties
处理会话的所有属性。 接口 IOpenRowset
和 IDBCreateCommand
用于执行数据库工作。 如果提供程序支持命令,它将实现 IDBCreateCommand
接口。 它用于创建可以执行命令的命令对象。 提供程序始终实现 IOpenRowset
对象。 它用于从提供程序生成行集。 它是来自提供程序的默认行集(例如,"select * from mytable"
)。
向导还会生成三个会话类:CCustomSessionColSchema
、CCustomSessionPTSchema
和 CCustomSessionTRSchema
。 这些会话用于架构行集。 架构行集允许提供程序将元数据返回到使用者,而无需使用者执行查询或提取数据。 提取元数据比查找提供程序的功能要快得多。
OLE DB 规范要求实现 IDBSchemaRowset
接口的提供程序支持三种架构行集类型:DBSCHEMA_COLUMNS、DBSCHEMA_PROVIDER_TYPES 和 DBSCHEMA_TABLES。 向导为每个架构行集生成实现。 向导生成的每个类都包含一个 Execute
方法。 在此方法 Execute
中,可以将数据返回到提供程序,了解支持的表、列和数据类型。 此数据在编译时是已知的。